【发布时间】:2021-11-10 02:32:04
【问题描述】:
我的页面上有多个链接,我想为所有链接创建相同的事件处理程序。
在第一个示例中,我只使用了一个选择器,它为两个链接正确地创建了事件处理程序:
$(document).ready(function () {
$('.link').on('click', function () {
alert($(this).text() + ' was clicked');
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href='#' class='link'>Link1</a>
<a href='#' class='link'>Link2</a>
在第二个示例中,我遍历每个元素并为每个元素创建事件处理程序:
$(document).ready(function () {
$('.link').each(function(){
$(this).on('click', function(){
alert($(this).text() + ' was clicked');
});
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href='#' class='link'>Link1</a>
<a href='#' class='link'>Link2</a>
两者都产生相同的结果,但为什么呢? jQuery 选择器是否已经遍历所有元素? jQuery 选择器是总是 迭代所有元素还是只在某些场景下迭代?
【问题讨论】:
-
这能回答你的问题吗? jQuery .each() - Practical uses?
-
@LW001:您链接的问题解释了每个选择器的工作原理,这很棒......我不明白的是:jQuery 选择器会自动遍历所有选择器吗?似乎确实... jQuery 选择器总是遍历选择器还是有特定的场景?
-
@HoomanBahreini 我认为这回答了你的问题:How can I learn how jQuery selectors work behind the scenes?
-
@GeorgeSun:这真的是一个不同的问题,它是在询问 jQuery 选择器如何找到一个元素。
-
如果我理解正确,您正在寻找Implicit iteration,TL;DR:选择(
$('.link'))返回一个选择,如项目列表。根据你用它做什么,可能会发生隐式迭代(通常在你的例子中使用像.on()这样的setter),如果你需要一个不隐式迭代的函数(通常是Getters),你会想使用@来迭代自己987654330@
标签: javascript jquery jquery-selectors