2013-05-15 15 views
1

我得到了一些像這樣的Html。jQuery如果元素存在不起作用

<div class="box span4"> 
    <img src="demo/img/tile.png" /> 
</div> 
<div class="box span4"> 
    Hello 
</div> 

現在,如果在我的方框中沒有圖像,我想包裹內部內容。它的功能就像沒有IF的魅力,但我無法讓它與IF一起工作。

if($('.box').find('img').length < 1){ 
    $(this).wrapInner('<div class="box_inner" />'); 
} 

我也曾嘗試:

if($('.box > img').length < 1){ 
    $(this).wrapInner('<div class="box_inner" />'); 
} 

我認爲這將是非常簡單,我以前做過類似的事情,但似乎沒有任何工作要解決的內部內容的另一個DIV當裏面沒有圖像時

有什麼我做錯了嗎?

+0

嘗試> =,而不是<。但說實話,我認爲你需要添加正則表達式來識別你的src中的.img。 – Cam

+0

添加這個而不是1做== img [src * = \\/thread_ – Cam

回答

3

this在代碼是指window對象,則可以使用not方法:

$('.box').not(':has(img)').wrapInner('<div class="box_inner" />'); 

http://jsfiddle.net/NpRpk/

+1

謝謝。這是做我想做的最簡單,最有效的方法。 :) – jurihandl

3

試試這個。檢查所有div與類框。

$('.box').each(function(){ 
    if($(this).find('img').length == 0){ 
     $(this).wrapInner('<div class="box_inner" />'); 
    }  
}); 
+0

謝謝你的回答。雖然它是正確的,並且可讀性好,但它不是最有效的方法。謝謝你的回答! – jurihandl