Триггер jQuery ('click') не работает с Jasmine-jquery
Это мой тестовый код:
describe("Login", function(){
beforeEach(function(){
loadFixtures('login-fixture.html');
})
it("should enable the button when checking 'remember password'", function(){
$('#remember').trigger('click');
expect($('#keepIn')).not.toBeDisabled();
});
});
И это мой производственный код:
$(document).ready(function(){
$('#remember').click(function(e) {
if($('#remember').is(':checked'))
{
$('#keepIn').removeAttr('disabled');
}
});
});
Это не работает, производственный код никогда не вызывается. Я поставил оповещения до и после события триггера и после триггера, флажок установлен, но функция.click не вызывается.
Есть мысли о том, почему это происходит?
1 ответ
Не видя остальной код, я предполагаю, что "login-fixture.html" содержит флажок "#remember". Если это так, он загружается после загрузки DOM. Это означает, что событие 'click', которое вы хотите назначить, будет применяться только к ранее загруженным элементам. Событие jQuery on() назначит любое событие, которое вы хотите, новым загруженным элементам. Вы можете попытаться добавить событие on () к этому идентификатору. Что-то вроде:
$(function(){
$('#remember').on('click', function(){
if($('#remember').is(':checked')){
$('#keepIn').checkboxradio('enable');
}
});
});
Надеюсь, это поможет.
Смотрите: http://api.jquery.com/on/