Javascript 获取一个div之后的所有div,并将其属性减少一个

Javascript 获取一个div之后的所有div,并将其属性减少一个,javascript,jquery,Javascript,Jquery,我有一些div有一个属性:rowNumber。 其中一个具有属性:isOpen=1 在它之后的所有其他对象都具有isOpen=0 例如: <div class="statusCell" isOpen="0" rowNumber="1"> 但它不起作用,因为: $('.statusCell[isOpen=1]').nextAll('.statusCell[isOpen=0]').length 是零 示例代码是: <td class="DesignedTableTD">

我有一些div有一个属性:
rowNumber
。 其中一个具有属性:
isOpen=1

在它之后的所有其他对象都具有
isOpen=0

例如:

<div class="statusCell" isOpen="0" rowNumber="1">
但它不起作用,因为:

$('.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>

和#9661;

感谢您的帮助

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-*
属性。

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-*
属性代替。

或者

var oStatCell = querySelectorAll(".statusCell[isOpen=1]");
for(i = 0; i < oStatCell.length; i++) {
    var cStatCell = oStatCell[i].querySelectorAll(".statusCell[isOpen=0]");
    for(j = 0; j < cStatCell.length; j++) {
        cStatCell[j].setAttribute("rowNumber", String(parseInt(cStatCell[j].getAttribute("rowNumber")) - 1));
    }
}
var oStatCell=queryselectoral(“.statusCell[isOpen=1]”);
对于(i=0;i
并不是说这是一个更好的选择,但我认为有一个非基于库的选项是很好的

queryselectoral()文档:

或者

var oStatCell = querySelectorAll(".statusCell[isOpen=1]");
for(i = 0; i < oStatCell.length; i++) {
    var cStatCell = oStatCell[i].querySelectorAll(".statusCell[isOpen=0]");
    for(j = 0; j < cStatCell.length; j++) {
        cStatCell[j].setAttribute("rowNumber", String(parseInt(cStatCell[j].getAttribute("rowNumber")) - 1));
    }
}
var oStatCell=queryselectoral(“.statusCell[isOpen=1]”);
对于(i=0;i
并不是说这是一个更好的选择,但我认为有一个非基于库的选项是很好的


querySelectorAll()文档:

您能分享html示例吗。。。。看起来这些不是兄弟元素。我不确定您是否想使用
。nextAll()
,而是
。children()
可能就是您想要的。正如@ArunPJohny所说,我认为这些不是兄弟姐妹,而是孩子。试试这个$('.statusCell[isOpen=0]')。如上所述的长度html代码将非常有助于回答您的问题。我更新了我的代码。。谢谢大家。需要查看
statusCell
元素的多个实例才能理解它们之间的关系。能否共享html示例。。。。看起来这些不是兄弟元素。我不确定您是否想使用
。nextAll()
,而是
。children()
可能就是您想要的。正如@ArunPJohny所说,我认为这些不是兄弟姐妹,而是孩子。试试这个$('.statusCell[isOpen=0]')。如上所述的长度html代码将非常有助于回答您的问题。我更新了我的代码。。谢谢大家。需要查看
statusCell
元素的多个实例才能理解它们之间的关系。。