jQuery - 如果前一个元素没有特定的类,则删除该元素

时间:2011-04-29 00:15:44

标签: jquery element

我写了这段代码,但它不起作用。

目标:

  1. 如果“.well-well”之前的范围不是“.dont-remove”,则删除该范围

  2. 但是,如果“.well-well”之前的跨度为“.dont-remove”,则不执行任何操作

  3. “示例”:

    http://jsfiddle.net/sAebR/

    if( $(".well-well").prev('span').not('.dont-remove') ){ $(".well-well").prev('span').remove(); }
    

    我对此代码的看法是,它删除了“.well-well”之前的所有跨度,我不明白为什么。

    我做错了什么?

3 个答案:

答案 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()函数将照顾它。

http://jsfiddle.net/sAebR/2/

答案 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/