这是我的测试代码:
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函数。
对于为什么会发生这种情况,有什么想法吗?
发布于 2012-06-25 23:24:23
在没有看到其余代码的情况下,我假设"login-fixture.html“包含"#remember”复选框。如果是这样,它将在DOM加载之后加载。这意味着您想要分配的“click”事件将只应用于先前加载的元素。jQuery on()事件会将您想要的任何事件分配给新加载的元素。您可能想尝试向该id添加一个on()事件。类似于:
$(function(){
$('#remember').on('click', function(){
if($('#remember').is(':checked')){
$('#keepIn').checkboxradio('enable');
}
});
});希望这能有所帮助。
请参阅:http://api.jquery.com/on/
https://stackoverflow.com/questions/11191966
复制相似问题