如果元素存在则jQuery不起作用

时间:2013-05-15 20:17:57

标签: javascript jquery dom-manipulation

我有一些这样的Html。

<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。

我有什么问题吗?

2 个答案:

答案 0 :(得分:3)

试试这个。用类框检查所有div。

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

答案 1 :(得分:3)

代码中的

this引用window对象,您可以使用not方法:

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

http://jsfiddle.net/NpRpk/