什么';jQuery.on()中第二个选择器的用途是什么?
由于您在('myEvent','mySecondSelector')上调用了什么';jQuery.on()中第二个选择器的用途是什么?,jquery,Jquery,由于您在('myEvent','mySecondSelector')上调用了$('mySelector'),我不明白“mySecondSelector”的用法 mySecondSelector: 选择器字符串,用于筛选将调用处理程序的选定元素的后代。如果选择器为null或省略,则处理程序在到达所选元素时总是被调用 有关更多详细信息,请参阅 mySecondSelector: 选择器字符串,用于筛选将调用处理程序的选定元素的后代。如果选择器为null或省略,则处理程序在到达所选元素时总是被调用 有
$('mySelector'),
我不明白“mySecondSelector”
的用法
mySecondSelector:
选择器字符串,用于筛选将调用处理程序的选定元素的后代。如果选择器为null或省略,则处理程序在到达所选元素时总是被调用
有关更多详细信息,请参阅
mySecondSelector:
选择器字符串,用于筛选将调用处理程序的选定元素的后代。如果选择器为null或省略,则处理程序在到达所选元素时总是被调用
有关详细信息,请参阅,第二个选择器是目标。此语法允许在运行代码时目标可能不存在的情况下,使用
on()
作为委派方法
假设这个标记
<ul id="list">
<li class="item">Item</li>
</ul>
但如果我们现在在列表中添加一个新项目
$('#list').append(' <li class="item">Item</li>');
将其解释为:
单击
#list
时,如果单击的目标是。item
,请运行处理程序,否则不要执行任何操作第二个选择器是目标。此语法允许在运行代码时目标可能不存在的情况下,使用on()
作为委派方法
假设这个标记
<ul id="list">
<li class="item">Item</li>
</ul>
但如果我们现在在列表中添加一个新项目
$('#list').append(' <li class="item">Item</li>');
将其解释为:
单击
#list
时,如果单击的目标是.item
,请运行处理程序,否则不要执行任何操作如果有一个元素包含多个子元素,如果不指定第二个选择器,则无论单击哪个子元素,都将触发事件。
如果指定该选项,则仅当使用该选择器单击选定图元时,事件才会激发
例如,您可能有:
<div id="clickable">
<div id="fireEvent">Example</div>
<div id="dontFireEvent">Example</div>
<div id="fireEvent"></div>
</div>
例子
例子
现在如果你调用,$('#clickable')。在('myEvent')代码>无论您在区域中的何处单击,事件都将触发
但是如果你调用,$('clickable')。在('myEvent','firevent')上代码>仅当您单击第一个和第三个div(id为“fireEvent”的div)时,事件才会触发。如果您有一个包含多个子元素的元素,如果您没有指定第二个选择器,则无论您单击哪个子元素,都会触发事件。
如果指定该选项,则仅当使用该选择器单击选定图元时,事件才会激发
例如,您可能有:
<div id="clickable">
<div id="fireEvent">Example</div>
<div id="dontFireEvent">Example</div>
<div id="fireEvent"></div>
</div>
例子
例子
现在,如果您调用,$('#clickable')。在('myEvent');
上,无论您在区域中的何处单击,事件都会触发
但是如果您调用,$(“#clickable”)。在('myEvent',“#fireEvent');
上,只有当您单击第一个和第三个div(id为“fireEvent”的div)时,事件才会触发。在jQuery 1.7x中添加了.on()
方法
为了回答您的问题,我需要首先解释添加此选项的原因。以前有(现在仍然没有)像.live()
这样的方法,它会不断监视DOM中与选择器匹配的元素。因此,每次DOM更改(无论是插入、重新排列、删除等)时侦听器将处于活动状态,并尝试查看需要附加哪些代理
假设一个页面有一个容器和1000个子元素。现在,子元素不断变化(主要是由于Ajax),您需要为每个子元素绑定一个。单击()
输入.on()
方法。基本上,这两个选择器用于:
第一个选择器-加载DOM后不应更改的父元素
第二个选择器—子元素
是您正在编写的方法的实际目标,即使在加载DOM之后,它也可能从第一个选择器来来去去
为了广泛使用,许多人使用“.on()”如
这通常是可以的,因为DOM通常不是很大。但是,它的作用是:它告诉jQuery观察DOM中的body
元素,并查找其中的所有#mydiv
元素。当有1000个子元素被操作时,与旧方法没有太大区别
因此,在使用.on()
时,请尝试将第一个选择器设置为包含第二个选择器元素的选择器,而不在DOM的上方。在jQuery 1.7x中,添加了.on()
方法
为了回答您的问题,我需要首先解释添加此选项的原因。以前有(现在仍然没有)像.live()
这样的方法,它会不断监视DOM中与选择器匹配的元素。因此,每次DOM更改(无论是插入、重新排列、删除等)时侦听器将处于活动状态,并尝试查看需要附加哪些代理
假设一个页面有一个容器和1000个子元素。现在,子元素不断变化(主要是由于Ajax),您需要为每个子元素绑定一个。单击()
输入.on()
方法。基本上,这两个选择器用于:
第一个选择器-加载DOM后不应更改的父元素
第二个选择器—子元素
是您正在编写的方法的实际目标,即使在加载DOM之后,它也可能从第一个选择器来来去去
为了广泛使用,许多人使用“.on()”如
这通常是可以的,因为DOM通常不是很大。但是,它告诉jQuery监视主体
$(body).on("click", "#mydiv", function(){
// do something
});