我很难理解jquery的.delegate函数的语法。假设我有以下内容:
$(".some_element_class").delegate("a", "click", function(){
alert($(this).html());
});
我知道a
元素是应用click
事件的元素。我知道,一旦我们点击a
元素,就会触发事件click
并调用回调函数。但.delegate
之前的目的是什么?在这种情况下,.some_element_class
的目的是什么?如何阅读上述内容,包括.some_element_class
?另外,在上面的例子中,$(this)
代表什么?它是代表a
元素还是代表.some_element_class
?
请有人,对此有所了解。
谢谢
答案 0 :(得分:1)
表示delegate()
上会调用.some_event_class
。并且a
是选择器字符串,click
是事件类型字符串& function()
是eventhandler函数。 delegate()
方法用于处理“直播事件”,并且使用静态事件bind()
。我希望这有帮助。如果您有任何疑问,请随时询问
bind()
&之间的差异delegate()
//Static event handlers for static links
$("a").bind("",linkHandler);
//Live event handlers for dynamic parts of the document
$(".dynamic").delegate("a", "mouseover", linkHandler);
摘要:它们只是将事件处理程序绑定到特定文档元素的方法。
答案 1 :(得分:1)
这会减少事件绑定。
这基本上只在a tags
的{{1}}内设置一个事件,而不是直接将事件绑定到.some_element_class
。
http://api.jquery.com/delegate/
从jQuery 1.7开始,.delegate()已被.on()方法取代。 然而,对于早期版本,它仍然是最有效的手段 使用事件委托。有关事件绑定和委派的更多信息 在.on()方法中。通常,这些是等效的模板 对于这两种方法:
a tags
答案 2 :(得分:1)
“...... .delegate之前的目的是什么?”
委托绑定到.some_element_class
元素。
在.some_element_class
该委托测试点击的内容,因此您的处理函数只会 运行...
"a"
选择器或.some_element_class
选择器匹配。"a"
因此,您可以看到只有一个处理程序绑定到容器。它分析容器内的所有点击,如果单击的元素(或其嵌套的祖先之一)与selector参数匹配,则您的函数将运行。
因为只有一个封闭处理程序,它将适用于添加到容器中的未来元素......
<div class="some_element_class"> <!-- delegate handler is here -->
<div>won't trigger your handler</div>
<a>will trigger your handler</a>
<a><span>will trigger</span> your handler</a>
</div>
“此外,在上面的示例中,
<div class="some_element_class"> <!-- delegate handler is here --> <div>won't trigger your handler</div> <a>will trigger your handler</a> <a><span>will trigger</span> your handler</a> <!-- this element newly added... --> <a><span>...will also trigger</span> your handler</a> </div>
表示什么?”
$(this)
将代表与this
选择器匹配的元素。
答案 3 :(得分:0)
a
实际上只是一个过滤选择器,会发生正常的点击事件绑定到.some_element_class
,并且只要事件触发,事件目标就会遍历到{{1查看是否存在与过滤选择器匹配的元素(标记名.some_element_class
)。如果是,则在a
设置为与冒泡路径中的this
选择器匹配的第一个元素时触发您的回调。
您可以使用bind执行类似的操作:
a