2016-08-17 17 views
7

Bir img etiketinin "colorbox" sınıfı olan bir şekil öğesinin içinde olup olmadığını ve bazı öğelere bazı ek stiller eklemek için olup olmadığını denetleyen bir işlev var. Bununla birlikte, fonksiyon, renk kutusu şeklinde görüntü olmasa bile hala çalışır ve nedenini bilmiyorum.jQuery var olmayan öğeyi tespit etme

My jQuery

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

Peki neden jQuery kokan bir öğe toplayıp olacağını ... Bu

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

benziyor Ve burada bir img eleman olmadan açıkça ColorBox rakamdır var mı?

cevap

4

tercih ediyorum herhangi img etiketleri var olmadığını kontrol etmek if($(".colorbox").has("img").length) isteyeceksiniz :

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

$(".colorbox") birdöndürür

öğesininlistesininlistesi .has("img") listesinden birini sorarsınız? Listede bir öğe içinde bir img elemanı varsa bu o zaman bir sonucu olarak bir gerçek olsun, demek ki if-ifadesi,

+0

Yanıt için teşekkürler, ancak ironik olarak, img etiketinin değil, img etiketinin olması durumunda jQuery'yi * diğer * öğelere uygulamak istiyorum. –

+0

diğer elemanlara mı? hangi elementler? Her bir döngü içinde JQuery'i yalnızca istediğiniz görüntü için değil, istediğiniz diğer öğelere de uygulayabilirsiniz. –

+0

Ah, haklısın. Anladım, yardım için çok teşekkürler. –

3

Yeni bir jquery altkümesi döndürüyor. sorununuza şimdi

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 
     } 

    }); 
} 

ve i bu şekilde yapacağını orada

+0

[Dokümanlar beklendiği gibi kod çalışmıyor bu yüzden ] (https://api.jquery.com/has/#has-contained) bunu desteklemek için: "DOM öğelerinin bir kümesini temsil eden bir jQuery nesnesi verildiğinde, .has() yöntemi bir alt kümeden yeni bir jQuery nesnesi oluşturur Karşılık gelen elemanlar, eşleşen elemanların torunlarına karşı test edilir, eğer elemanlardan herhangi biri, seçici ile eşleşirse, eleman, sonuca dahil edilir. " – user3366016

+0

.length yönteminin kullanılması, işlevlerin herhangi bir koşul altında çalışmasını engeller; bu nedenle, bir img etiketi olsa bile işlev çalışmaz. –

+0

İşte bir örnek [jsfiddle] (http://jsfiddle.net/rxkbo9q3/4/) uzunluğu nasıl çalıştığını ve ne $ (".renkbox"). ("Img"). (".colorbox"). ("img") çıktıları vardır. Umarım farkı göstermeye yardımcı olur. – user3366016

4

Ben find fonksiyonunu

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

if ($img.length) { //exisst 

} 
İlgili konular