从JQuery中的html字符串中删除元素

所以,我很难过如何在JQuery中排除子子被选中…

这是我的字符串中的HTML结构:

some data I don't want.
more data I don't want
Text I want to extract here.

注意:我没有选择这个。 我试图解析来自这个任意xml feed的结构中的文本“我想要在这里提取的文本”。

这是我的测试JQuery:(d是HTML字符串)

 $('tr > td:eq(1) > table', d).remove(); var c = $('tr > td:eq(1)', d).text(); 

第一行不会删除表。 我测试选择器,它确实设法选择元素。 我使用错误的方法删除元素吗?

我也尝试过使用not()replaceWith()而没有运气。

 $('tr > td:eq(1)', d).not('tr > td:eq(1) > table').text(); 

 $('tr > td:eq(1) > table', d).replaceWith(""); 

我对其他选择方法持开放态度,这些方法只检索特定td中的文本。

您声明d是HTML字符串”

这意味着当你这样做时:

 $('tr > td:eq(1) > table', d).remove(); var c = $('tr > td:eq(1)', d).text(); 

…你要从同一个未经修改的字符串中创建两次元素。


您需要从中创建一次元素,然后缓存这些元素。

 var $d = $(d); // create the elements out of the string, and cache the set $d.find('tr > td:eq(1) > table').remove(); // remove table from the cached set var c = $d.find('tr > td:eq(1)').text(); // target the  and get its text 

JSFIDDLE DEMO


或者,由于jQuery的.end()方法,您可以像这样一次完成所有操作:

 var c = $(d).find('tr > td:eq(1)') .children('table') .remove() .end() .text(); 

JSFIDDLE DEMO

什么是d ? 当我创建一个你的js / HTML的例子时,它似乎运行良好。 你可以在这里看到它:

http://jsfiddle.net/v7Qm2/

当你不应该将范围限制为d时,是否有可能?

注意:

只是为了澄清,我的答案是你的代码看起来很好,似乎做你想要的。 我认为问题是你不应该限制选择器的范围。