13

此代码不起作用。this+'>a'不是有效的语法。那么,如何在 的子级中添加/删除一个类this?在这种情况下是一个a元素。

 jQuery(function ($) {
        $("nav.menu>ul>li").hover(
            function () {
               $(this+'>a').addClass("hover_triangle");//error
            },

            function () {
               $(this+'>a').removeClass("hover_triangle");//error
            });
    }); 

我不能这样做nav.menu>ul>li>a,因为会选择a菜单中的所有元素。

4

5 回答 5

24
$(this).children('a').addClass('hover_triangle');

并使用完整的代码:

jQuery(function($) {
    $('nav.menu>ul>li').hover(function() {
       $(this).children('a').addClass('hover_triangle');
    },function() {
       $(this).children('a').removeClass('hover_triangle');
    });
}); 
于 2012-10-29T01:27:50.490 回答
2

$('a', this)允许您仅查看this对象内部

jQuery(function ($) {
    $("nav.menu>ul>li").hover(
        function () {
           $('a', this).addClass("hover_triangle");//error
        },

        function () {
           $('a', this).removeClass("hover_triangle");//error
        });
});
于 2012-10-29T01:28:50.213 回答
2

您可以使用.find()

$(this).find('> a').addClass("hover_triangle");

这将只访问的直接子元素nav.menu>ul>li

检查小提琴

如果你只想选择直接的孩子.find('a') ,甚至会得到嵌套的锚点。为了避免这种情况,你需要使用.find('> a')或者.children('a')

于 2012-10-29T01:30:55.810 回答
1

$(this).find('a').addClass('hover_triangle')- 更常见的方式,因为不必是直系子女

于 2012-10-29T01:29:14.010 回答
1

有 2 种方法可以搜索this. 大多数人都回答了find()(而且更容易阅读),但是 jquery 选择器也可以有第二个参数,即context.

$('a', this)是另一种语法,与$(this).find('a). 在内部,jQuery 将采用第一种情况并使用find(),但语法是有效的,许多人使用它

API 参考: jQuery( 选择器 [, context] )

于 2012-10-29T01:36:54.780 回答