2017-06-19 41 views
-1

我得到一个错误与此代码元素添加类具有类名的TreeView

$(this + '.treeview').addClass('active'); 

的错误是

Uncaught Error: Syntax error, unrecognized expression: [object HTMLLIElement].treeview

如何纠正?

+0

'this'在上述背景下是一个DOM元素,你”重新尝试将它连接到一个不起作用的字符串。 '$'构造函数将使用DOM元素,选择器(字符串),但不能同时使用两者。你试图将两者结合在一起的意图是什么? – FuriousD

+0

我有li元素作为子菜单元素li的主菜单,当子菜单被点击时,主菜单也被点击,因为子菜单在主菜单元素中。问题是将主菜单设置为活动, 但是,然后我把stopPropagation放在子菜单中,以避免这种情况。 – Aidin

回答

0

您连接了一个对象和一个字符串。如果你想要做的就是找到了this代表的DOM节点的孩子,你首先需要创建一个jQuery实例:

$(this) 

,然后使用api选择匹配类,孩子们:

$(this).children('.treeview')... 

但是,如果你正在寻找任何后代,你会使用.find()

$(this).find('.treeview')... 

或者你可以使用简写形式:

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

这是工作...使用$(this).find('。treeview') – Aidin

0

我终于用@zzzzBov答案

这里解决我的问题是完整的代码

$('.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'); 
     } 
    } 
}); 
相关问题