jQuery触发器('click')不能与Jasmine-jquery一起使用

mor*_*ner 2 javascript jquery jasmine 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();
    });
});
Run Code Online (Sandbox Code Playgroud)

这是我的生产代码:

$(document).ready(function(){

    $('#remember').click(function(e) {
        if($('#remember').is(':checked'))
        {
            $('#keepIn').removeAttr('disabled');
        }
    });

});
Run Code Online (Sandbox Code Playgroud)

这不起作用,生产代码永远不会被调用.我已经在触发事件之前和之后发出警报,并且在触发之后选中了复选框,但是没有调用.click函数.

有关为什么会发生这种情况的任何想法?

JCS*_*yer 5

在没有看到其余代码的情况下,我假设"login-fixture.html"包含"#remember"复选框.如果是这样,它在DOM加载后加载.这意味着您要分配的"单击"事件仅适用于先前加载的元素.jQuery on()事件将为新加载的元素分配您想要的任何事件.您可能想尝试向该id添加on()事件.就像是:

$(function(){
    $('#remember').on('click', function(){
        if($('#remember').is(':checked')){
            $('#keepIn').checkboxradio('enable');
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.

请参阅:http://api.jquery.com/on/