2017-06-19 14 views
-1

を持つ要素にクラスを追加が、私はこのコードでエラーを得たクラス名のツリービュー

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

エラーが

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

がどのように修正するのですか?

+0

'this'はDOM要素であり、そしてあなた。ここ@zzzzBov答え

を使用して私の問題を解決しましたそれを動作させない文字列と連結しようとしています。 '$'コンストラクタはDOM要素、セレクタ(文字列)のいずれかをとりますが、両方をとることはありません。 2つを組み合わせようとするあなたの意図は何でしたか? – FuriousD

+0

私は、サブメニューがクリックされたときにサブメニュー要素liを有するメインメニューとしてli要素を有する。サブメニューはメインメニュー要素にあるので、メインメニューもクリックされる。問題は、メインメニューをアクティブに設定することでした しかし、私はそれを避けるためにサブメニューelemenにstopPropagationを入れました。 – Aidin

答えて

0

オブジェクトと文字列を連結しています。クラスに一致する子どもたちを選択するために

$(this) 

、その後apiを使用します:何がやりたいことはthisに代表されるDOMノードの子を見つけている場合は、まずjQueryインスタンスを作成する必要があります

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

それとも、使用することができます:あなたはすべての子孫を探しているなら

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

しかし、あなたは.find()使用したいです速記形式:

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

その作業は... $(this).find( '。treeview')を使用しています – Aidin

0

私は最終的に「上記の文脈での完全なコード

$('.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'); 
     } 
    } 
}); 
関連する問題