首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击触发器(‘jQuery’)不能与Jasmine-jquery一起使用

单击触发器(‘jQuery’)不能与Jasmine-jquery一起使用
EN

Stack Overflow用户
提问于 2012-06-25 23:09:17
回答 1查看 5.6K关注 0票数 3

这是我的测试代码:

代码语言:javascript
复制
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();
    });
});

这是我的产品代码:

代码语言:javascript
复制
$(document).ready(function(){

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

});

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

对于为什么会发生这种情况,有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-25 23:24:23

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

代码语言:javascript
复制
$(function(){
    $('#remember').on('click', function(){
        if($('#remember').is(':checked')){
            $('#keepIn').checkboxradio('enable');
        }
    });
});

希望这能有所帮助。

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11191966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档