JQuery选择器从类中删除集合中的子项

时间:2015-03-04 20:48:18

标签: javascript jquery

这可能是一个简单的问题,当我看到答案时我会感到愚蠢,但我不是一个javascript专家,而且我一直在努力解决它。问题是基于我试图对this jQuery plugin HTML-table-to-Excel export library进行的修改。

该库排除了<tr>标记具有特定类的表行。但是,我想添加功能,因此它将删除具有该类的其他子元素,而不删除整行(基本问题是我在表单元格中有按钮在Web浏览器中有意义,但不在Excel中) 。这是基本形式的问题。

HTML:

<div id="test-div">
<b>Original Table</b>
<table id="test-table">
<tr class="exclude"><td>Exclude this row</td></tr> <!-- this works fine-->
<tr><td>Include this whole row</td></tr>
    <tr><td>Include this row <span class="exclude">but not this text</span></td>  </tr>
</table>
    <hr />
    <b>Modified Table</b> <!-- is inserted by jQuery below -->  
</div>    

和Jquery:

$("#test-div").append("<table>");
$("#test-table").find("tr").not(".exclude").each(function (i,o) {
$("#test-div").append("<tr>" + $(o).html() + "</tr>"); //  <-- how to exclude child span of class "exclude" from this tr? 
   }); 
$("#test-div").append("</table>");

此处a JSFiddle。目标是获取文本&#34;但不是这个范围&#34;在不改变原始表(用户正在查看的表)的情况下,不出现在修改表中(即,正在导出的内容)。如果跨度是一个更远的孩子,或者如果它是另一种标签类型(例如,如果它去了<tr><td><div><div class="exclude">,那么它也应该起作用,也应该排除div)。我已尝试链接其他各种.not()方法,或者尝试不在另一个find()上的:()选择器,但没有运气。

1 个答案:

答案 0 :(得分:2)

this怎么办?

<div id="test-div">
    <b>Original Table</b>
    <table id="test-table">
    <tr class="exclude"><td>Exclude this row</td></tr>
    <tr><td>Include this whole row</td></tr>
    <tr><td>Include this row <span class="exclude">but not this text</span></td></tr>
</table>
    <hr />
     <b id="new-table">Modified Table</b>

</div>    

Jquery的

var newTable = $("#test-table").clone();
newTable.appendTo("#new-table").html();
$("#new-table  *").remove(".exclude");