jQueryにて、特定の子要素がなければ、親要素にクラスを付与する方法を探しています。
下記のコードで、要素3のliにのみクラスをつける方法です。
HTML
1<ul> 2 <li> 3 <a>要素1</a> 4 <button>ボタン1</button> 5 </li> 6 <li> 7 <a>要素2</a> 8 <button>ボタン2</button> 9 </li> 10 <li><a>要素3</a></li> 11</ul>
試したこと
取得したliをeachで1つずつ処理をし、has('button')でbutton要素を持っていなければ、activeクラスを付与、としたかったが、クラスは付与されず、変化はなにもない(エラーは出ていない)。
jQuery
1$(window).on('load', function() { 2 var lists = $('ul > li'); 3 lists.each(function(index, elem) { 4 if(!$(elem).has(button)) { 5 $(elem).addClass('active'); 6 } 7 }); 8});
each文の代わりにfor文でも試したが、同様の結果。
jQuery
1$(window).on('load', function() { 2 var lists = $('ul > li'); 3 for(var i = 0; i < lists.length; i++) { 4 if(!$(lists[i]).has(button)) { 5 $(lists[i]).addClass('active'); 6 } 7 } 8});
試しにif文の条件から'!'を外してみると、全てのliにクラスが付与されてしまった。
jQuery
1$(window).on('load', function() { 2 var lists = $('ul > li'); 3 lists.each(function(index, elem) { 4 if($(elem).has(button)) { 5 $(elem).addClass('active'); 6 } 7 }); 8});
has()ではない方法があるのでしょうか。どなたかご教示いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー