我写了这段代码,但它不起作用。
目标:
如果“.well-well”之前的范围不是“.dont-remove”,则删除该范围
但是,如果“.well-well”之前的跨度为“.dont-remove”,则不执行任何操作
“示例”:
if( $(".well-well").prev('span').not('.dont-remove') ){ $(".well-well").prev('span').remove(); }
我对此代码的看法是,它删除了“.well-well”之前的所有跨度,我不明白为什么。
我做错了什么?
答案 0 :(得分:3)
你不需要if:
$(".well-well").prev('span').not('.dont-remove').remove()
你的代码所说的是:
if ($(".well-well").prev('span').not('.dont-remove') != null)
{
//remove them all
}
不要担心if。 remove()函数将照顾它。
答案 1 :(得分:1)
这是因为你删除元素的方式。如果找到符合条件的元素,则删除每个元素(没有特定条件)。
在空集合上使用remove
是完全合法的,所以你不应该担心是否有元素。试试这个:
$(".well-well").prev('span').not('.dont-remove').remove();
答案 2 :(得分:1)
在您的情况下,not
语句始终在评估true
,因为它返回一个jQuery对象,因此您将删除所有跨度。
jQuery适用于集合,可以链接。您可以简单地将它们全部组合到此:
$(".well-well").prev('span').not('.dont-remove').remove();
检查一下 - http://jsfiddle.net/WFTbF/1/