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/