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函数。

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

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

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

希望有所帮助。

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