我有以下的jQuery代碼遍歷525(我知道,很多!)複選框:優化jQuery選擇爲Chrome
var elements = $("#profile-list table tr input[type=checkbox].email-checkout:not(:checked)");
$.each(elements, function(i) {
$(elements[i]).attr('checked', 'checked');
});
UPDATE的HTML如下:
<table>
<tr>
<th>Name</th>
<th>Title</th>
<th>E-mail</th>
<th>Telephone</th>
<th id="email_check"><img src="check_black.png"/></th>
</tr>
<?php foreach ($this->profiles as $profile): ?>
<tr>
<?php echo $this->presentProfile($profile, 'list') ?>
</tr>
<?php endforeach; ?>
這基本上循環遍歷數據庫中的所有配置文件,併爲每個配置文件創建一個錶行,其中最後一個表數據包含複選框,其中on e可以選擇發送電子郵件給。如果用戶點擊ID爲「email_check」的表格標題,那麼JavaScript代碼應該會引入,這就是Chrome失敗的原因。
我附上事件用下面的代碼:
$("#email_check img").live('click', function() {
//my code
}
當我在Firefox(MAC),它的順利運行這段代碼,但是當我在瀏覽器(MAC)運行它永遠結束了給我的窗口鉻給我提供了殺死窗口的選項,所以基本上它永遠不會完成這個循環。
我一直在儘可能地優化這個選擇器,並且自從jquery 1.3,我明白他們從左到右切換到右側到左側選擇器,這基本上意味着我應該嘗試使我的權利大多數選擇器都儘可能具體。它可以比我目前有更具體的嗎?
或者它只是需要這麼長的循環?我嘗試從$ .each切換到()的正則表達式,但沒有獲得正面結果。
任何提示或想法如何解決這個問題?
Ingiber
是一個穩定的Chrome版本,或開發一個?這也可能會有所作爲 – 2010-11-05 13:19:43
我在mac上使用7.0.517.44版本,我認爲它是穩定版本 – Indyber 2010-11-05 13:28:29
也可以在Safari中嘗試。 Safari和Chrome共享相同的引擎.... – 2010-11-05 13:32:48