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

标签 jquery jquery-selectors

所以,我对如何在 JQuery 中排除子子项被选中感到非常困惑......

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

<table>
   <tr>
       <td>some data I don't want.</td>
       <td>
       <table><tr><td>more data I don't want</td></tr></table>
       Text I want to extract here.
       </td>
   </tr>
</table>

注意:我没有选择这个。我正在尝试从来自任意 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 <td> and get its text

<强> JSFIDDLE DEMO

<小时/>

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

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

<强> JSFIDDLE DEMO

关于jquery - 从 JQuery 中的 html 字符串中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8359828/

相关文章:

jquery - 在 jQuery UI Datepicker 中禁用 future 日期

jquery - 在 jquery 中的 HTML 中添加动态行字段

JQuery:如何替换嵌套标签后的文本?

jQuery SlideToggle() 问题 - 更改显示 :block to display:inline-table?

javascript - 使用多维数组创建表 - 错误 : Cannot set property of undefined

javascript - 检查一个元素是否包含特定的子元素

javascript - jquery 文本中最接近的选择器

jquery - 仅在层次结构的特定深度上嵌套 <li> 事件

javascript - 点击抓取数据 ID 并使用 jQuery 推送到数组

javascript - 使用 jquery、ajax 和 codeigniter 的链选择器动态下拉框