jQuery .each()方法的两个参数的解释

Explanation of two arguments for jQuery .each() method

本文关键字:两个 参数 解释 方法 jQuery each      更新时间:2023-09-26

在下面的jQuery中,.each()方法有两个参数:'ul li a'menu。这两个论点是什么意思?

var menu = $('.menu');
$('ul li a', menu).each(function() {
    $(this).append('<span />');
});
HTML:

<div class="menu">
    <ul>
        <li><a href="#">Edit Profile</a></li>
        <li><a href="#">Account Settings</a></li>
        <li><a href="#">Appear Offline</a></li>
        <li><a href="#">Logout</a></li>
    </ul>
</div>

jQuery函数的第二个参数是上下文。这告诉jQuery只在上下文中搜索

中的元素。

对于你的例子:

$('ul li a', menu).each(function() {
    $(this).append('<span />');
});

这将只搜索位于菜单内的ul中的li中的锚。

这是一个非常有用的优化,因为它可以显著减少jQuery必须搜索的空间。

编辑

为了更清楚一点(正如jfriend00指出的那样),您的特定示例$('ul li a', menu)相当于$('.menu ul li a')

context参数在docs

中有解释

Assalamu Alaikkum兄弟好,
解释如下:
第一个参数是'ul li a'这意味着它在列表项标签中搜索锚标记,而该标签又出现在无序列表标签中。第一个参数是子上下文。

第二个参数菜单,它是主上下文。也就是说,jquery搜索类名"menu"的元素。

最后,jquery在主上下文中搜索子上下文。所以jquery首先搜索主上下文"menu",然后在主上下文中搜索子上下文。关键字"each"表示要在主元素中搜索的所有子元素。