我有一个关于jQuery bind的工作的问题。每当我们在任何元素上使用bind方法并编写一些回调代码时,是否会在绑定事件上执行完整的代码“每次”或者jQuery只记得输出/该代码的结果并仅执行该结果..
我们还可以在回调代码中生成另一个事件吗?
就像它是如何工作的那样。
答案 0 :(得分:1)
答案 1 :(得分:1)
每次触发事件时,都会执行绑定到指定目标上的事件的所有函数。这些回调函数的返回值用于确定事件是否应继续传播。
作为脚本的一部分调用的函数与事件回调之间存在一些显着差异:
this
引用事件被分配到的绑定元素)i
之类的循环索引在调用回调时可能会有最终值。由于回调只是函数,它们可以执行任何其他函数可以执行的任何操作,包括调用trigger
。注意不要因为对同一事件的递归函数调用而导致自己无限循环。
你不想打电话:
function foo()
{
foo();
}
同样,你不想打电话:
$('#foo').click(function(){
//short form for .trigger('click')
$(this).click();
});
答案 2 :(得分:-1)
您可以使用.trigger()轻松生成另一个事件。
修改强>: 阅读并重新阅读您的第一个问题。我相信您正在寻找的答案是每次执行 时执行bind()。但是,在回调代码更改DOM的情况下,可以添加元素,而不会绑定该元素上的事件。
考虑添加按钮<input id="mybutton" type="button"...
的代码。如果在所有代码中使用$("#mybutton").bind("click")
,则此新元素将不会绑定任何事件。为了获得“点击”来执行某些操作,您必须在将其添加到DOM之后将其绑定,或者您必须使用.live()或.delegate()而不是.bind()。