0

属性を持つ div がいくつかあります: rowNumber。そのうちの 1 つに属性があります: isOpen=1

それの後にある他のすべてのものはisOpen=0.

例えば:

<div class="statusCell" isOpen="0" rowNumber="1">

isOpen=1 の div の後にあるclassstatusCellを持つすべての div を取得し、rowNumber を 1 つ減らしたいと考えています。

私は次のようなことをする必要があります:

$('.statusCell[isOpen=1]').nextAll('.statusCell[isOpen=0]').each(function() {
    var rowNumber = $(this).attr("rowNumber");
    var newRowNumber = parseInt(rowNumber, 10) - 1;
    $(this).attr('rowNumber', newRowNumber.toString());
});

しかし、次の理由で機能しません。

$('.statusCell[isOpen=1]').nextAll('.statusCell[isOpen=0]').length

ゼロです..

サンプルコードは次のとおりです。

<td class="DesignedTableTD">
    <div class="statusCell" style="cursor:pointer;" isOpen="0" rowNumber= "1">
       <p style="display:inline;" class="yellow" title="fd">
         <img alt="Active" src="@Url.Content("~/Images/play.png")" class="help"/>
       </p>&#9661;
    </div>
</td>

どんな助けでも大歓迎です!

4

2 に答える 2

2

nextAll選択した要素の次の一致する兄弟を選択しますが、ここではそうではありません。次のindex()メソッドを使用できます。

var $statusCell = $('.statusCell[isOpen]'),
          $open = $statusCell.filter('[isOpen=1]'),
              i = $statusCell.index($open);

$statusCell.filter(':gt('+i+')').foo();

// Decreasing attributes' value
// $statusCell.slice(++i).attr('rowNumber', function(_, value) {
//    return +value - 1;                           
// });

isOpenおよびは有効な属性ではないことに注意してください。rowNumberページの Doctype が HTML5 の場合は、data-*代わりに属性を使用できます。

于 2013-09-12T17:05:27.860 に答える