У меня есть следующий фрагмент кода (я использую jQuery 1.4.2):
$.post('/Ads/GetAdStatsRow/', { 'ad_id': id }, function(result) {
$('#edit_ads_form tbody').prepend(result);
$(result).find('td.select-ad input').attr('checked','checked').click();
});
Предположим, что запись работает правильно и возвращает правильную предварительно собранную <tr>
с некоторыми <td>
с. Вот странность: строка $(result).find()
находит правильный ввод (который является флажком, так как он является единственным входом в ячейке) и правильно запускает цепочечную функцию click()
, но она ОТКАЗЫВАЕТСЯ установить флажок как отмеченный, что я должно случиться.
Вот еще и сумасшедший поворот ... когда я получаю супер-специфичные данные и меняю строку $(result).find()
на эту (идентификатор флажка):
$('#ad_' + id).click();
Он устанавливает флажок, но не запускает функцию click()
! Если я установлю его на
$('#ad_' + id).attr('checked','checked').click();
он запускает функцию щелчка, как если бы флажок был установлен, но флажок остается не отмеченным, и если я сделаю
$('#ad_' + id).click().attr('checked','checked');
он вообще ничего не делает.
Что в мире может быть с этим? У меня кончаются волосы ....
Спасибо!
EDIT
Вот как я устанавливаю свое событие нажатия на вызове $(function())
:
$('td.select-ad input').live('click',AdPreview.selectAd);
Он работает как и для всех других флажков, и вновь добавленный флажок действительно работает, если щелкнуть вручную.
РЕДАКТИРОВАТЬ 2
После некоторого копания я обнаружил, что это:
$('#ad_' + id).click();
на самом деле вызывает вызов моей функции щелчка в дополнение к установке флажка. Тем не менее, когда вызывается функция щелчка (я уже проверил, чтобы убедиться, что input
является правильным флажком, и это так),
var input = $(this);
console.log(input.is(':checked'));
журнал возвращает false, хотя флажок на самом деле установлен! GAH WTF