Javascript 获取一个div之后的所有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">
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>▽
</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
元素的多个实例才能理解它们之间的关系。。