У меня есть следующий код jquery, чтобы обойти 525 (я знаю, много!) Флажки:
var elements = $("#profile-list table tr input[type=checkbox].email-checkout:not(:checked)");
$.each(elements, function(i) {
$(elements[i]).attr('checked', 'checked');
});
ОБНОВЛЕНИЕ 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; ?>
Это в основном циклически повторяет все профили в базе данных и создает строку таблицы для каждого профиля, где последние данные таблицы содержат флажок, который можно выбрать для отправки электронной почты.Если пользователь щелкает заголовок таблицы с идентификатором «email_check», то должен включиться код javascript, и в этом случае Chrome не работает.
Я присоединяю событие со следующим кодом:
$("#email_check img").live('click', function() {
//my code
}
Когда я запускаю этот код в Firefox (Mac), он идет гладко, но когда я запускаю его в Chrome (Mac), он занимает вечность и в итоге дает мне окно, где Chrome предлагает мне возможность убить окно, так что в основном этоникогда не завершает этот цикл.
Я пытался оптимизировать этот селектор столько, сколько смогу, и, начиная с jquery 1.3, я понимаю, что они переключались слева направо, справа налево, что в основном означает, чтоЯ должен попытаться сделать свой самый правый селектор как можно более конкретным.Может ли он быть более конкретным, чем у меня сейчас?
Или это цикл, который просто занимает столько времени?Я пытался переключиться с $ .each на обычную функцию for () без положительного результата.
Какие-нибудь советы или идеи, как я могу это исправить?
Ingiber