Jquery 将类添加到具有classname treeview的元素

Jquery 将类添加到具有classname treeview的元素,jquery,Jquery,我的代码出错了 $(this + '.treeview').addClass('active'); 错误是 未捕获错误:语法错误,无法识别的表达式:[object HTMLLIElement]。treeview 如何更正?您正在连接一个对象和一个字符串。如果要查找由this表示的DOM节点的子节点,则首先需要创建jQuery实例: $(this) 然后使用选择与类匹配的子级: $(this).children('.treeview')... 但是,如果您要查找任何后代,请使用: 或者您可以

我的代码出错了

$(this + '.treeview').addClass('active');
错误是

未捕获错误:语法错误,无法识别的表达式:[object HTMLLIElement]。treeview


如何更正?

您正在连接一个对象和一个字符串。如果要查找由
this
表示的DOM节点的子节点,则首先需要创建
jQuery
实例:

$(this)
然后使用选择与类匹配的子级:

$(this).children('.treeview')...
但是,如果您要查找任何后代,请使用:

或者您可以使用速记形式:

$('.treeview', this)...

我终于用@zzbov-answer解决了我的问题

这是完整的代码

$('.dinz-submenu').click(function (e) {
    e.stopPropagation();
});

$('.sidebar-menu li').click(function (e) {
    if ($(this).hasClass('treeview')) {
        $('.sidebar-menu li ').removeClass('active');
        $('.treeview-menu').slideUp();

        if(!$(this).find('.treeview-menu').is(':visible')){
            $(this).children('.treeview-menu').slideDown();
        }
        $(this).addClass('active');

        return false;
    } else {
        if ($(this).hasClass('dinz-submenu')) {
            $('.treeview-menu li ').removeClass('active');
        } else {
            $('.treeview-menu').slideUp();
            $('.sidebar-menu li ').removeClass('active');
        }
    }
});

在上面的上下文中,这个
是一个DOM元素,您试图用一个无效的字符串连接它。
$
构造函数将使用DOM元素和选择器(字符串),但不能同时使用两者。您试图将两者结合在一起的意图是什么?我将li元素作为主菜单,其中包含子菜单元素li,当单击子菜单时,也会单击主菜单,因为子菜单位于主菜单元素中。问题是将主菜单设置为激活状态,但随后我在子菜单元素中添加了stopPropagation以避免出现这种情况。
$('.dinz-submenu').click(function (e) {
    e.stopPropagation();
});

$('.sidebar-menu li').click(function (e) {
    if ($(this).hasClass('treeview')) {
        $('.sidebar-menu li ').removeClass('active');
        $('.treeview-menu').slideUp();

        if(!$(this).find('.treeview-menu').is(':visible')){
            $(this).children('.treeview-menu').slideDown();
        }
        $(this).addClass('active');

        return false;
    } else {
        if ($(this).hasClass('dinz-submenu')) {
            $('.treeview-menu li ').removeClass('active');
        } else {
            $('.treeview-menu').slideUp();
            $('.sidebar-menu li ').removeClass('active');
        }
    }
});