Tag: javascript

jQuery:在3个类之间切换(最初)

我在SO上看过几篇post,但它们在function和结构方面都太具体了,而我正在寻找的东西是我或任何人可以在任何地方使用的更普遍的东西。 我只需要一个按钮,点击它可以在3个类之间循环。 但是如果出现必须循环通过4,5个或更多类的情况,则可以轻松地缩放脚本。 到目前为止,我能够在两个class级之间“循环”,这基本上比骑车更“切换”,所以我有: HTML: Toggle classes … jQuery的: $(‘.toggle’).click(function () { $(‘div’).toggleClass(‘class1 class2’); }); 这是一个简单的小提琴 。 现在,你会(我,我)认为在方法中添加第三个类会起作用,但它不会: $(‘div’).toggleClass(‘class1 class2 class3’); 发生的事情是切换开始只发生在class1和class3之间。 所以这就是我最初的问题: 如何让Toggle按钮按顺序循环通过3个类? 然后:如果有人需要循环到4,5或更多课程怎么办?

如何检测何时已加载iframe

似乎$(‘#someIframe’).load(function(){…})如果在iframe完成加载后附加,则不会触发。 那是对的吗? 我真正喜欢的是拥有一个在加载iframe时或之后总是被调用一次的函数。 为了更清楚,这里有两种情况: Iframe尚未加载 : 加载后运行回调函数。 iframe已经加载 :立即运行回调。 我怎样才能做到这一点?

从JavaScript重新启动动画GIF而不重新加载图像

我正在使用动画GIF创建动画幻灯片。 我正在从一个动画到另一个动画交叉淡入淡出。 问题是:我发现确保GIF从第一帧开始动画的唯一方法是每次显示它时重新加载它。 每个GIF大约200KB左右,这对于连续幻灯片放映而言带宽太多了。 这是我目前的代码。 img和nextimg是 标签,每个标签包含一个 。 nextimg_img是与要显示的下一个图像对应的标记。 var tmp = nextimg_img.attr(‘src’); nextimg_img.attr(‘src’, ”); setTimeout(function() { nextimg_img.attr(‘src’, tmp); }, 0); img.fadeOut(‘slow’); nextimg.fadeIn(‘slow’); 我们的想法是将下一个图像的src属性设置为” ,然后将其设置回要显示的GIF源。 这样做 – 它从头开始重新启动动画 – 但是每次显示GIF时都会重新加载。 编辑:这是一个循环幻灯片,我试图避免在他们显示第二/第三/后续时间时从网上重新加载GIF。

将数据从jQuery传递到PHP以获取ajaxpost

你好,我是一个使用jQuery和Ajax的新手。 我正在尝试使用Jquery POST方法将数据提交到服务器。 我传递的数据是一个字符串。 现在我无法理解如何传递数据以及如何检索数据。 我试过为我的问题搜索文章,但我没找到。 我相信我的问题非常基础。 if (1)//validateStep(step) { if(step==1) { var data = document.getElementById(‘hiddenContact’).value; $.post(‘/callcenter/admin/postContacts’, data); } } 现在我将发布我的postContacts动作的代码,这不是一件大事。 function postContacts() { $this->autoRender = false; echo ‘console.log(“post contacts”);’; } 但我对如何检索数据感到困惑。 任何帮助表示赞赏。 我正在使用cakePHP,所以我不得不使用autoRender = false; 这使视图可选。

在输入时validationhtml文本输入

在键入HTML文本输入时,validationHTML文本输入的最佳方法是什么? 我所知道的所有方法都有一些缺点: 使用$.keypress您只能访问输入的旧值,而不是新值。 此外,将无法检测到某些事件(如使用鼠标进行剪切/粘贴)。 仅当输入失去焦点时,才使用$.change 。 这个问题提出了一个解决方案,您可以使用轮询来监视属性更改。 原则上,可以validation回调中的新值,如果无效,则还原为旧值。 但是,除了要求投票之外,我不确定它是否可以免于竞争。 本文建议使用浏览器特定function,如果没有可用则回退到轮询。 看起来是迄今为止最好的方法。 [更新]如答案所示, $.keyup可以在更新后访问该值。 但是,它不仅不适用于鼠标剪切/粘贴,而且如果按住某个键也会失败,只有在输入很多内容后才会释放。 或者,如果将keydown和keyup组合起来保存/恢复旧值,则如果用户键入太快则会中断。 以上解决方案都没有错误或非常安全的跨浏览器。 有没有更好的解决方案,既可以随时使用,也可以在制造中使用? 似乎是一个常见的问题,我最近试图回答类似的 问题 ,没有成功,我也对答案感兴趣。 ( 对于这种做法的一个好的论据也是受欢迎的,如果实施此validation会出现新的问题;但是,这似乎在其他语言中是常​​见的,所以我怀疑这是一件坏事想要)

Jquery忽略编码ISO-8859-1

我有一个网站,它从字符串中删除正确的编码(ISO-8859-1)并发送错误。 我在我的HTML中指定了此编码 我通过加载我的JavaScript <script type="text/javascript" charset="ISO-8859-1" src="… 我通过JQuery Ajax Request发送信息(带有德语特殊字符’ö’和’ä’): $.ajax({ url: ‘..’, type: ‘POST’, contentType: ‘application/xml;charset=ISO-8859-1’, data: xmlRequest.html(),… 这被转换为请求,在Chrome开发人员工具中,我在Request Header中看到了这一点: .. Content-Type: application/xml;charset=UTF-8 .. 那里发生了什么? 当然特殊字符编码错误(“¶”而不是“ö”)服务器无法理解我,我得到一个错误。

jQuery document.ready

我对jQuery中的document.ready有点困惑。 你什么时候在$(document).ready()中定义javascript函数,什么时候不是? 将所有javascript代码放在$(document).ready()中是否足够安全? 你不这样做会发生什么? 例如,我使用通常的jQuery选择器,当你点击东西时它会做某事。 如果你不用document.ready包装它们有什么危害? 如果在页面加载之前有人在分秒中单击元素,它是否只会导致问题? 或者它会导致其他问题吗?

错误:拒绝访问属性“处理程序”的权限

我有一个用于Firefox的greasemonkey脚本,昨天它运行得很好。 我今天尝试使用它(没有代码被修改),我注意到它停止工作。 经过进一步检查,脚本现在抛出以下错误: Error: Permission denied to access property ‘handler’ 在以下代码块中抛出此错误: $(‘body’).click(function() { // code here }); 这个错误神奇地开始发生在今天脚本工作正常昨天。 我不明白为什么在尝试做一些基本的事情时会发生这种错误,例如在jQuery中添加事件处理程序。 我的脚本使用的jQuery已经在脚本执行的页面中使用,因此我使用此代码使GM可以访问它: var $ = unsafeWindow.jQuery; 如果需要,可供参考,以下是我在脚本中使用的以下Greasemonkey函数: // @grant GM_getResourceText // @grant GM_addStyle // @grant GM_xmlhttpRequest // @grant GM_getResourceURL 我试过研究这个错误,我找不到任何答案。 所有看似可能有用的问题都涉及iframe,并且在我的代码或运行的网站中找不到单个iframe。 我也尝试删除并重新安装脚本,但没有解决问题。

在javascript中将字符串转换为对象数组的最佳方法?

我想在javascript中将下面的字符串转换为数组。 {a:12, b:c, foo:bar} 如何将此字符串转换为对象数组? 有什么好主意吗?

使用window.onbeforeunload事件中的window.event.keyCode在javascript中捕获f5 keypress事件始终为0而不是116

我正在创建一个MVC应用程序。在关闭应用程序(即窗口/选项卡)时,将会话中的变量设置为null是必要的,但是在刷新应用程序时却没有。 我通过以下代码尝试了它。 window.onbeforeunload = function (e) { e = e || window.event; if (window.event.keyCode == 116) { alert(“f5 pressed”); } else { alert(“Window closed”); //call my c# code to make my variable null, eg:Session[“myVariable”] = null; } }; 但是当按下F5时,“window.event.keyCode”总是0而不是116.因此,即使按F5键,我的变量也变为空,这不是我的要求。 即使应用程序(即网页)关闭,即使它的0(这可能是正确的)。 请注意,代码的上述部分位于.cshtml文件中。 任何人都可以告诉我哪里错了吗?