用于在.remove()之后链接jQuery的交叉浏览器解决方案

用于在.remove()之后链接jQuery的交叉浏览器解决方案,jquery,dom,chain,Jquery,Dom,Chain,使用.remove()或类似方法删除DOM元素后,我想进一步链接并从我所在的位置到达DOM节点 例如: $(SELECTOR).children().first().remove().parents(SELECTOR1).doSomething().andSoOn() 更新: 我想要一种适用于所有现代浏览器的方法,即从8开始。无需链接此方法。只要先把它设置为一个变量,这样你就可以在它消失后做任何你想做的事情 var $remove = $(SELECTOR).children().first(

使用
.remove()
或类似方法删除DOM元素后,我想进一步链接并从我所在的位置到达DOM节点

例如:

$(SELECTOR).children().first().remove().parents(SELECTOR1).doSomething().andSoOn()
更新:


我想要一种适用于所有现代浏览器的方法,即从8开始。

无需链接此方法。只要先把它设置为一个变量,这样你就可以在它消失后做任何你想做的事情

var $remove = $(SELECTOR).children().first(),
    $parents = $remove.parents(SELECTOR1);
$remove.remove();
$parents.doSomething().andSoOn();

没有必要将此方法链接起来。只要先把它设置为一个变量,这样你就可以在它消失后做任何你想做的事情

var $remove = $(SELECTOR).children().first(),
    $parents = $remove.parents(SELECTOR1);
$remove.remove();
$parents.doSomething().andSoOn();

如果您的行不工作,就不可能获取不存在元素的父元素(实际上听起来很合乎逻辑…)


解决了这个问题。

如果您的行不工作,就不可能获取不存在元素的父元素(实际上听起来很合乎逻辑…)


解决了此问题。

删除元素后,您无法进一步移动,但可以尝试以下操作:

$(SELECTOR).children().first().remove().add($(SELECTOR))
      .parents(SELECTOR1).doSomething().andSoOn()
您可以使用它从这些元素和传递到方法中的元素的并集构造一个新的jQuery对象


这意味着在删除当前选择器子项的第一个子项后,它将再次添加当前选择器,并在
.parents(selector1)中进一步查找选择器
,您可以在父项选择器之一上进行进一步处理,然后继续操作。

删除元素后,您无法进一步移动,但可以尝试以下操作:

$(SELECTOR).children().first().remove().add($(SELECTOR))
      .parents(SELECTOR1).doSomething().andSoOn()
您可以使用它从这些元素和传递到方法中的元素的并集构造一个新的jQuery对象

这意味着在删除当前选择器子项的第一个子项后,它将再次添加当前选择器,并将在
中进一步查找选择器。parents(selector1)
中,您可以对父项选择器之一进行进一步处理,然后继续操作。

如果我得到它,请使用:

如果我得到它,请使用:



除了将节点本身存储在变量中之外,没有办法在DOM树上存储已删除节点的位置吗?@StevenPalinkas有,但我不明白您为什么要这样做。这会更慢,因为在之后必须根据索引重新获取元素。将元素存储为变量绝对没有错。它也很快。是的,@Adam,可能是,但它与我的问题没有严格的关系@StevenPalinkas正如你所知,就像我说的使用变量是。没有办法在DOM树上存储已删除节点的位置,而不是将节点本身存储在变量中吗?@StevenPalinkas有,但我不明白你为什么要这样做。这会更慢,因为在之后必须根据索引重新获取元素。将元素存储为变量绝对没有错。它也很快。是的,@Adam,可能是,但它与我的问题没有严格的关系@StevenPalinkas正如你所知,就像我说的使用变量是。你能-请-提供一些解释吗?如果
$(选择器)
是父项之一怎么办?@Adammerfield这取决于当前选择器的父项,因为OP不清楚!你是否认为这个方法比A. Wolff提出的一个更快速的方法呢?在你的答案中也有“<代码> .Enter()”/“代码>?看起来你丢失了<代码> <代码>。你能提供一些解释吗?如果<代码> $(选择器)怎么办?是父项之一吗?@adammerifield这取决于当前选择器的父项,因为OP不清楚!你是否认为这个方法比A. Wolff提出的一个更快速的方法,在代码中引用了<代码> .Enter()/<代码>?在你的答案中也出现了“<代码> > <代码>。哇,我甚至从来没有听说过<代码>结尾()/<代码>。很好的发现。尽管“代码> $(选择器)< /代码>是匹配<代码>选择项1>代码>的父项之一吗?您是否认为此方法比@ dHavalMARTAK建议的更快,比<代码>Marthak@A.Wolff这是真的。。。但是你也可以做一些类似于
$(选择器).children().first().remove().end().parents().addBack().filter(选择器1).doSomething().andSoOn()
哇,我真的从来没有听说过
end()
。很好的发现。尽管“代码> $(选择器)< /代码>是匹配<代码>选择项1>代码>的父项之一吗?您是否认为此方法比@ dHavalMARTAK建议的更快,比<代码>Marthak@A.Wolff这是真的。。。但您也可以执行类似于
$(选择器).children().first().remove().end().parents().addBack().filter(选择器1.doSomething().andSoOn()