2010-06-25 66 views
1

我想选择所有没有IMG标签并追加它的项目。我可以这样做:检查一个元素是否不存在并追加它

我该怎么做?

<div class="test"> 
    <div class="someDummydiv"></div> 
    </div> 
    <div class="test"> 
    <div class="someDummydiv"></div> 
    <img src="try.gif" /> 
    </div> 
    <div class="test"> 
    <div class="someDummydiv"></div> 
    </div> 
    <div class="test"> 
    <div class="someDummydiv"></div> 
    <img src="try.gif" /> 
    </div> 
    <div class="test"> 
    <div class="someDummydiv"></div> 
    </div> 
    <div class="test"> 
    <div class="someDummydiv"></div> 
    <img src="try.gif" /> 
</div> 

结果 - >

<div class="test"> 
    <div class="someDummydiv"></div> 
    <img src="try.gif" /> 
    </div> 
    <div class="test"> 
    <div class="someDummydiv"></div> 
    <img src="try.gif" /> 
    </div> 
    <div class="test"> 
    <div class="someDummydiv"></div> 
    <img src="try.gif" /> 
    </div> 
    <div class="test"> 
    <div class="someDummydiv"></div> 
    <img src="try.gif" /> 
    </div> 
    <div class="test"> 
    <div class="someDummydiv"></div> 
    <img src="try.gif" /> 
    </div> 
    <div class="test"> 
    <div class="someDummydiv"></div> 
    <img src="try.gif" /> 
    </div> 

非常感谢您

回答

9

您可以使用,使用:not():has()生存检查选择,并追加到这些,就像这样:

$('.test:not(:has(img))').append('<img src="try.gif" />'); 

只需更换中的选择器去寻找你想要的.append()

+0

这是真正的清洁。我的方法也应该可以工作,并且允许对没有图像的元素进行额外的处理,但是一个班轮总是很好。 :) – 2010-06-25 16:41:00

1

这应该接近:

$('div.test').each(function() { 
    var $this = $(this); 
    if ($this.children('img').size() == 0) { 
    $this.append('<img src=try.gif>'); 
    } 
});