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

时间:2011-12-31 05:48:39

标签: javascript jquery

在以下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>

2 个答案:

答案 0 :(得分:7)

jQuery函数的第二个参数是上下文。这告诉jQuery 搜索该上下文中的元素

所以对你的例子来说:

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

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

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

修改

为了使这一点更清晰(正如jfriend00指出的那样),您的特定示例$('ul li a', menu)等同于$('.menu ul li a')

上下文参数在docs

中进行了解释

答案 1 :(得分:1)

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

第二个参数菜单,这是主要的上下文。那就是jquery搜索类名的元素作为“menu”

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

希望这会对你有所帮助。