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>

このコードを使用して、奇数行と偶数行の最初の 2 つの td からデータを取得しようとしています

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

しかし、正しい出力が得られません。最初の 2 つのセルだけでなく、Button セルが返される理由を誰かが提案できます。

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/

findDOM を再クエリするよりも効率的な、キャッシュされたオブジェクトとメソッドを使用できます。using は要素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 に答える