javascript - 获取一个div之后的所有div并将其属性减一

标签 javascript jquery

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

其后的所有其他都有 isOpen=0

例如:

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

我想获取在 isOpen=1 的 div 之后找到的所有具有 statusCell 类的 div,并将它们的 rowNumber 减一。

我需要做这样的事情:

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

感谢任何帮助!

最佳答案

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;                           
// });

请注意,isOpenrowNumber 不是有效属性,如果页面的 Doctype 是 HTML5,则可以使用 data-* 属性代替.

关于javascript - 获取一个div之后的所有div并将其属性减一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18770106/

相关文章:

javascript - 有没有一种简单的方法可以在 vis.js 中双击节点创建超链接/javascript 操作?

javascript - 如何强制复选框表现得像单选按钮、双循环

javascript - 带有元素数量的垂直 Bootstrap 轮播

javascript - 删除代码后 this.form.submit() 仍然会触发

javascript - CSS/HTML Internet Explorer 设置跨度宽度?

javascript - 在android中使用javascript设置内容时的编码问题

jquery - 使用 jquery 单独关闭同一类的每个 div?

javascript - 未捕获的类型错误 : $(. ..)。Datatable 不是函数。但在我调用 datatable 之前 Jquery 已经加载了

javascript - 在 DOM 中运行 Greasemonkey 创建的代码?

javascript - jQuery - 清除textarea文本内容