2012-03-02 14 views
2

シンプルなものに困っています。私の朝の紅茶は十分強くない。jQuery divにアンカー子がある場合

IF divにはアンカーTHEN-blahの子があります。 (ほとんどのjQueryのメソッドなど)childrenメソッドが返すので

$('.box').click(function(){ 
    if ($(this).children('a').length) { 
     //some thing 
    } else { 
     //some thing else 
    } 
}); 

lengthプロパティをチェック

$('.box').click(function(){ 
    if ($(this).children('a')) { 
     //some thing 
    } else { 
     //some thing else 
    } 
}); 

<div class="box"><a href="#"><img src="#" /></a></div> 
<div class="box"><img src="#" /></div> 
<div class="box"><img src="#" /></div> 
+0

あなたがアンカーに追加されたCSSすべきいくつかの 'thing'たい場合は、それはBLAMの子であるときやじるを特定のCSSセレクタ子「BLAM>やじる」を使用することを検討してください。もっとconcreete "div.box>" divのクラスのアンカー子 ".box" – DwB

答えて

8

:よう

何かを.BOXするために追加のクラスを追加する必要はありませんjQueryのインスタンスでは、常にtrueと評価されます(したがって、いつもifブランチになります)。 lengthプロパティは数値を返します。0の場合はfalseと評価されます。

+0

ビンゴバンゴ、それは速かった。なぜ私はアンカーの量を測定する必要がありますか?さもなければ、0か何かで始まる配列を返しますか? – technopeasant

+0

'children'メソッドは、要素が含まれているかどうかに関係なく、常に' true'と評価されるjQueryのインスタンスを返します。 –

+0

そのことに私を打ち負かす、説明のためにあまりにもありがとう。早く受け入れる – technopeasant

0

.find()を使用してセレクタで追加のセレクタを検索することができます。http://jsfiddle.net/Nf3QH/希望に役立ちます!

0

最近、jQueryは必要ありません。ちょうどバニラのJavaScriptを少し追加するだけで、コードがかなり短いことに気づくでしょう。

cells = document.querySelectorAll('div'); 
 
      [].forEach.call(cells, function (el) { 
 
      //console.log(el.nodeName) 
 
      if (el.hasChildNodes() && el.firstChild.nodeName=="A") { 
 
      console.log(el)}; 
 
     });
<div class="box"><a href="#"><img src="#" /></a></div> 
 
<div class="box"><img src="#" /></div> 
 
<div class="box"><img src="#" /></div>

関連する問題