Tag: javascript events

javascript事件队列有优先权吗?

这些天,我已经阅读了一些关于setTimeout,setInterval的文档。 我了解到javascript是一个单独的线程,每次只执行一段代码。 同时,如果有事件发生,它将被推入事件队列并阻塞直到适当的时间。我想知道,当许多事件被阻塞等待同时执行时。这些事件是否有所不同优先级,所以高优先级事件将在低优先级之前执行。或者只是一个FIFO队列。 setTimeout(fn1, 10); $(document).click(fn2); //will be called at 6ms; $.ajax({ajaxSuccess(fn3); //async request,it uses 7ms;}) for () { //will run 18ms; }; 在上面的代码中,setTimeout fn1将在10毫秒发生,点击事件处理程序fn2将在6毫秒,ajax回调fn3将在7毫秒。 但是所有这三个函数都将被阻塞,直到for循环结束。在18ms,for循环结束,所以这些函数的调用顺序是什么。(fn1,fn2,fn3)或(fn2,fn3,fn1)

jQuery:绑定到表单提交事件时查找被点击的元素?

我认为这应该很简单。 说我有以下jQuery: $someForm.live(‘submit’, function(event) { // do something }); 如果该表单中有多个提交按钮( ),并且我想引用所单击按钮的name属性,我将如何在回调函数中执行此操作? 更新 – 澄清 在回调上下文中, this和event.target引用表单本身,而event是一个深度嵌套的对象。 它可能包含我正在寻找的东西,但我还没有找到它。 另一种表达这个问题的方法是,“如果我正在观看表单上的提交事件(而不是其子元素),那么当我处理该事件时,有什么方法可以确定事件冒泡的子元素到forms?“ 点击的元素在这一点上是否可用,或者浏览器是否只是将其视为表单本身没有更深层来源的事件? 更新2 – 答案 似乎答案是Nick Craver所说的 – 提交事件源自表单本身,因此无法追溯到具有点击事件而非提交事件的按钮。 为了从点击中获取任何进一步的信息,必须有一个按钮的点击监听器。 在某些情况下(如我的),您可能需要1)捕获单击的提交按钮和2)绑定到表单上的提交事件。 例如,如果您正在使用jQuery Validate,它会阻止表单提交,直到它有效。 如果您通过绑定到按钮单击通过ajax提交表单,您将绕过该validation。 正如Nick所示,您可以通过使用按钮的单击侦听器捕获按钮信息来解决此问题,然后在表单的提交回调中使用此信息。 将单击回调中的按钮信息传递给表单提交回调的一种干净方法是使用jQuery.data()将其存储在表单上。 例如: // In the button’s click event callback… jQuery.data($someForm, ‘lastSubmitButton’, event.target.name); // In the form’s submit event callback… var whichButton = jQuery.data($someForm, […]

如何在Javascript或Jquery中检查Textarea是否为空?

我如何检查textarea是否包含任何内容? 我试过这个代码 if(document.getElementById(“field”).value ==null) { alert(“debug”); document.getElementById(“field”).style.display =”none”; } 但它没有做我所期望的。 我希望它应该出现一个消息框“debug”,并且textarea不会显示。 我该如何解决这个问题?

在jquery中多次触发window.resize

我在HTML文件中有以下javascript / jquery代码: $(window).resize(function(){alert(‘hi’);}); resize me 它看起来相对简单,但是当我调整浏览器窗口大小时,我在Chrome和IE9上连续两个警报窗口,我看起来崩溃了FF5。 我错过了什么? 每个尺寸(x / y)是一个火吗?

使用JQuery捕获粘贴到textarea中的文本

我必须使用JQuery获取文本区域的粘贴事件。 我尝试了以下代码,但它不起作用…… $(document).ready(function() { $(‘#txtcomplaint’).keyup(function() { TextCounter(‘txtcomplaint’,’counterComplaint’, 1000 ); }) $(‘#txtcomplaint’).onpaste(function() { alert() //TextCounter(‘txtcomplaint’,’counterComplaint’, 1000 ); }) });

为什么jQuery.val(value)不会从DOM元素中调度任何事件?

当我们在DOM元素上使用方法jQuery.Val( value )来改变它的值。 元素是否应该调度一个事件来通知它的值已经改变了? – 虽然事件’变更’将被派遣。 如果不应该为什么? 现场演示

当元素以编程方式在鼠标下移动时,不会触发jQueryhover

我有一个hover效果的图像(当鼠标hover在它上面时,不透明度更高)。 当鼠标移入和移出时,它可以根据需要工作。 但是,图像本身正在移动(我定期更改css属性顶部)。 当鼠标不移动并且图像在鼠标光标下移动时,不会触发相关事件。 这意味着,不会调用hoverfunction。 我也试过使用mouseenter和mouseleave事件,但它们也不起作用。 什么是获得所需行为的好方法(鼠标hover在图像上时hover效果,无论它为什么到达那里)?

带有选择器的本机addEventListener,如jQuery中的.on()

有谁知道如何在本机JS中实现jQuery的.on()方法? “addEventListener”方法不会将子/选择器元素作为过滤方式,我认为我没有正确的冒泡/捕获知识来完全理解那里发生的事情。 我确实在event.js中查询了源代码,看起来最终addEventListener确实像通常那样被使用了,但是我不确定我是否非常了解源代码。 如果本机方法没有提供利用冒泡和捕获的机制,那么jQuery .on()函数是否真的有任何好处,或者只是让它看起来那样? 我的印象是 .on(‘parent’, ‘.child’, fn(){}); 比单独将事件附加到所有孩子更有效,但是根据我对源的解释,很难判断jQuery是否以某种方式管理这种方式以提高性能,或者仅仅是为了提高可读性。 是否有一种标准方法可以在父母身上实施事件,利用其子元素的冒泡/捕获阶段,而不是必须将事件附加到每个孩子身上?

在mouseup事件处理程序中取消单击事件

编写一些拖放代码,我想在我的mouseup处理程序中取消单击事件。 我认为防止默认应该做的伎俩,但点击事件仍然被触发。 有没有办法做到这一点? 这不起作用: test $(“#test”).mouseup (function (e) { var a = 1; e.preventDefault(); }); $(“#test”).click (function (e) { var a = 2; });

Twitter引导程序:模态淡入淡出

我有一个twitter bootstrap模式的问题… 当我的元素上没有.fade类时,它工作正常。 一旦我添加它,模态就不会显示出来。 我想到了这个问题,我想: doAnimate ? this.$backdrop.one(transitionEnd, callback) : callback() doAnimate是webkitTransitionEnd ,它看起来很好。 但我认为transitionEnd永远不会被触发,因为我尝试在回调中记录某些内容,并且它永远不会被记录。 有任何想法吗? 编辑:一些代码 链接: I’m attending! 模态(没有淡入淡出类,在我添加时不起作用) css: .modal.fade { -webkit-transition: opacity .3s linear, top .3s ease-out; -moz-transition: opacity .3s linear, top .3s ease-out; -ms-transition: opacity .3s linear, top .3s ease-out; -o-transition: opacity .3s linear, top .3s ease-out; transition: opacity .3s linear, […]