2016-08-17 9 views
7

私はimgタグが "colorbox"のクラスを持つFigure要素の中にあるかどうかを調べる関数を持っています。そうであれば、いくつかの要素にいくつかの追加のスタイリングを追加します。しかし、カラーボックスの画像に画像がなくても機能が実行され、理由はわかりません。jQueryが存在しない要素を検出しています

私のjQueryのはなぜjQueryの「doesnの要素を拾うことになる。この

jQuery(document).ready(function($){ 
    if ($(".colorbox").has("img")) { 
    ~code here~ 
    } 
} 

そして、ここのように見えるカラーボックスの図で、明確にimg要素なし...

<figure class="colorbox"> 
    <ficaption> 
    <h2></h2> 
    <p></p> 
    <p></p> 
    </figcaption> 
</figure> 

存在しない?

答えて

4

を好む内の任意のimgタグがあるかどうかを確認するif($(".colorbox").has("img").length)をお勧めします:

$(".colorbox").has("images"); 

$(".colorbox")はを返します。リストの

の場合のリスト.has("img")が表示されますか?これは、リスト内の1つの要素が内部IMG要素を持っている場合を意味し、その後、あなたはあなたのコードが期待

+0

返答いただきありがとうございますが、皮肉なことにimgタグがある場合はimg自体ではなく、他の*要素にjQueryを適用したいと思います。 –

+0

他の要素に?どの要素?各ループの内部では、Jqueryをそのイメージだけでなく、他の要素にも適用できます。 –

+0

ああ、そうです。私はそれを把握することができた、非常に助けをありがとう。 –

3

新しいjqueryサブセットを返します。あなたの問題になりました

jQuery(document).ready(function($){ 
    $('.colorbox img').each(function(){ 
     var imageElement = $(this); 
     // do whatever you want with this element ! 
    }); 
    // OR this way 
    $('.colorbox').each(function(){ 
     var box = $(this); 
     if(box.find('img').length){ 
      // this means the parent colorBox has at least 1 img-Element 
     } 

    }); 
} 

と:私は、このようにそれを行うだろうが

+0

[ドキュメントとして動作しない理由です、if文そのの結果としてを取得します](https://api.jquery.com/has/#has-contained)をサポートしています。「DOM要素のセットを表すjQueryオブジェクトを指定すると、.has()メソッドはサブセットから新しいjQueryオブジェクトを構築します提供されたセレクタは、一致する要素の子孫に対してテストされ、子孫要素のいずれかがセレクタと一致する場合、要素は結果に含まれます。 – user3366016

+0

.lengthメソッドを使用すると、どのような状況でも関数が機能しなくなるので、imgタグがあっても関数は起動しません。 –

+0

長さの仕方と$( "。colorbox")。has( "img")の表示方法を示すサンプル[jsfiddle](http://jsfiddle.net/rxkbo9q3/4/)があります。 ( ".colorbox")。has( "img")の出力があります。違いを見せてくれることを願っています。 – user3366016

4

私はfind機能に

var $img = $(".colorbox").find("img"); 

if ($img.length) { //exisst 

} 
関連する問題