从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的例子时,它似乎运行良好。 你可以在这里看到它:
当你不应该将范围限制为d
时,是否有可能?
注意:
只是为了澄清,我的答案是你的代码看起来很好,似乎做你想要的。 我认为问题是你不应该限制选择器的范围。