Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';jQuery.on()中第二个选择器的用途是什么?_Jquery - Fatal编程技术网

什么';jQuery.on()中第二个选择器的用途是什么?

什么';jQuery.on()中第二个选择器的用途是什么?,jquery,Jquery,由于您在('myEvent','mySecondSelector')上调用了$('mySelector'),我不明白“mySecondSelector”的用法 mySecondSelector: 选择器字符串,用于筛选将调用处理程序的选定元素的后代。如果选择器为null或省略,则处理程序在到达所选元素时总是被调用 有关更多详细信息,请参阅 mySecondSelector: 选择器字符串,用于筛选将调用处理程序的选定元素的后代。如果选择器为null或省略,则处理程序在到达所选元素时总是被调用 有

由于您在('myEvent','mySecondSelector')上调用了
$('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
});