簡體   English   中英

用 while 循環替換低效的 jQuery 代碼

[英]Replace non-efficient jQuery code with a while loop

我有以下代碼工作 -

$('.sectionHeader:contains(Product Specific Documents)').next('div').find('table').find('input[type="checkbox"]').attr('checked', true);
var attr = $('.sectionHeader:contains(Product Specific Documents)').next('div').next('div').attr('id');
if(typeof attr !== undefined && attr !== false) {
$('.sectionHeader:contains(Product Specific Documents)').next('div').next('div').find('table').find('input[type="checkbox"]').attr('checked', true);
}

它基本上選擇/選中特定表格內的復選框。 它工作正常,但看起來很丑。

我想用while循環替換它。 while 循環背后的想法是 -

找到所需的標題(表的)和將該標題分配給變量后的下一個 DIV。 然后我檢查一個循環,如果 id 屬性存在,如果存在,然后我在其中搜索一個表格,然后在里面搜索復選框並選擇它們。 然后我重新分配一個變量,添加下一個 DIV 並在 while 循環中檢查它。

所以,代碼看起來像 -

var at = $('.sectionHeader:contains(Product Specific Documents)').next('div');
while (typeof at.attr('id') !== undefined || at.attr('id') !== false) {
    at.find('table').find('input[type="checkbox"]').attr('checked', true);
    at = at.next('div');
}

但它不起作用/它與我的初始代碼不一樣。

var at = $('.sectionHeader:contains(Product Specific Documents)').next('div');
for (var idx = 0; idx < 4 && (typeof at.attr('id') != 'undefined' && at.attr('id') != null); ++idx) {
    at.find('table').find('input[type="checkbox"]').attr('checked', true);
    at = at.next('div');
}

//這個for循環有效

我還發現了為什么 while 循環不起作用 - 因為檢查 null 很重要 -

var at = $('.sectionHeader:contains(Product Specific Documents)').next('div');
while (typeof at.attr('id') !== 'undefined' && at.attr('id') != null) {
    at.find('table').find('input[type="checkbox"]').attr('checked', true);
    at = at.next('div');
}

//這個while也有效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM