Триггер 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/

Другие вопросы по тегам