我试图在另一个foreach中做一个foreach。 第一个是预先找到每个WodTabIndex类,每个输入,链接和选择找到的秒数。
这是我的代码
var StartId= 500; $('.WodTabIndex').each(function(){
var $this = $(this);
$this.children(':input:visible, input[type="checkbox"], a, select').each(function(i){
(this).attr('tabindex', StartId + i);
(this).attr('tabindex', StartId + i);
});
});
我做错了什么,但我不知道是什么。因为永远不会进入foreach。
答案 0 :(得分:1)
for (var i = 0; i <= $('.WodTabIndex').length; i++) {
var $this = $($('.WodTabIndex')[i]).children(':input:visible, input[type="checkbox"], a, select');
for (var ii = $($this).length - 1; ii >= 0; ii--) {
$($($this)[ii]).attr("tabindex", ii+500);
console.log("Row: "+i+" Checkbox index "+ii+" have attr tabindex: "+(ii+500));
// inspect element to see result
// each checkbox have tabindex 500, 501, 502, ...
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="WodTabIndex">
<input type="checkbox">
</div>
<div class="WodTabIndex">
<input type="checkbox">
<input type="checkbox"> <input type="checkbox">
</div>
<div class="WodTabIndex">
<input type="checkbox">
<input type="checkbox"> <input type="checkbox">
<input type="checkbox"> <input type="checkbox">
<input type="checkbox"> <input type="checkbox">
</div>
答案 1 :(得分:1)
发布的代码有两个问题:
首先,您需要使用.find
而不是.children
。儿童只能查看直接信条,而不是项目下方的整个DOM。
所以这个html:
<div id='top'>
<ul>
<li></li>
<li></li>
$("#top").children("li")
代码无法找到li
。
第二个是你需要在循环中使用$(this)
,否则你得到this.attr is not a function
更新了问题的代码:
var startId = 500;
$('.WodTabIndex').each(function(){
var $this = $(this);
$this.find('input:visible, input[type="checkbox"], a, select').each(function(i){
$(this).attr('tabindex', startId + i);
});
});