1

我有一个很像这样的表结构

            <table id="oustandingItems">
            <thead>
                <tr><th>Category</th>
                <th>Details</th>
                <th></th>
            </tr></thead>
            <tbody>
                <tr>
                    <td>
                        <select id="OICategory">
                             <option value="1">Fault</option>
                             <option value="2">Shortage</option>
                             <option value="3">Retorfit</option>
                             <option value="4">Labour</option>
                             <option value="5">Other</option>
                         </select>
                    </td>
                    <td><textarea id="OIDetails" rows="3" cols="62"></textarea></td>
                    <td><button id="addNewRow" class="addbutton">>Add</button></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td class="detailsCounter textareacounter">185 characters remaining</td>
                    <td>&nbsp;</td>
                </tr>
            <tr>
                <td class="evenrow">Fault</td>
                <td class="evenrow">ghgfhgfhgfhgfh</td>
                <td class="butCell evenrow">
                    <button class="removeitem">Remove</button>
                </td>
            </tr>
            <tr>
                <td class="oddrow">Fault</td>
                <td class="oddrow">cvbcvbcvbcvbcvb</td>
                <td class="butCell oddrow">
                    <button class="removeitem">Remove</button>
                </td>
            </tr>
         </tbody>
        </table>

我正在尝试使用此代码从奇数行和偶数行的前两个 td 中检索数据

$(document).ready(function() {
var tableHeader = $('#oustandingItems');
var tds = $('#oustandingItems td.evenrow, #oustandingItems     td.oddrow').filter(function(index) {
    alert($(this).not('button.removeitem').html());
});
});​

但是我没有得到正确的输出,任何人都可以提出我返回按钮单元格以及前两个单元格的原因。

JSFiddle 示例

4

2 回答 2

2

您正在使用filter方法,但实际上不过滤元素,您可以使用not方法:

$(document).ready(function() {
  var $tableHeader = $('#oustandingItems');
  var $tds = $tableHeader.find('td.evenrow, td.oddrow').not('.butCell').each(function(){
      // alert($(this).text())
  })
});

http://jsfiddle.net/8rSLC/

您可以使用find比重新查询 DOM 更有效的缓存对象和方法。请注意,使用button.removeitem不会过滤您的td元素。

于 2012-10-26T07:05:20.317 回答
0

尝试将其添加到您的选择器:

button:not(.removeitem) , 

即排除您的按钮:

var tds = $('#oustandingItems td.evenrow, #oustandingItems td.oddrow button:not(.removeitem)').filter(function(index)

请参阅此处的jQuery 选择器文档。

于 2012-10-26T07:02:32.063 回答