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');
}
}
});