单击事件禁用其他单击事件

时间:2015-10-04 15:33:45

标签: jquery html

这是我的问题。我有这段代码:

 var state1 = $('.a').clone();
    $('.c').click(function(){
      $('.a').html('<div class="b"></div>');

   }); 
   $('.b').click(function(){
      $('.a').replaceWith(state1);
    });

这是HTML

<div class="a"><img class="c"></div>

当我点击图像c时,它可以工作,但是b点击功能将不起作用。我试图点击b点击功能。所以它有效,但只是第一次。谢谢你的帮助

4 个答案:

答案 0 :(得分:1)

每次迭代后都需要重新关联该函数。请尝试以下代码

$('.c').click(function () {
    ChangeToB();
});


function ChangeToB() {
    var state1 = $('.a').clone();
    $('.a').html('<div class="b"></div>');

    $('.b').on('click', function () {
        $('.a').replaceWith(state1);
        $('.c').click(function () {
            ChangeToB();
        });
    });
}

undefined behavior

答案 1 :(得分:0)

您在元素存在之前附加click事件。请尝试使用jQuery on功能。

$('body').on('click', '.c', function(){
    $('.a').html('<div class="b"></div>');
});

$('body').on('click', '.b', function(){
    $('.a').replaceWith(state1);
});

此方法允许您为将来存在的元素附加click事件。

答案 2 :(得分:0)

这不起作用,因为在插入DOM之前将事件附加到“.b”。

尝试使用委托活动。

    var state1 = $('.a').clone();
    $(document).on('click', '.c', (function(){
      $('.a').html('<div class="b"></div>');
    });

    $(document).on('click', '.b', (function(){
      $('.a').replaceWith(state1);
    });

答案 3 :(得分:0)

b是动态创建的元素,因此单击不会注册到新元素。 这可以解决问题。

    var state1 = $('.a').clone();
    $('.c').click(function(){
      $('.a').html('<div class="b"></div>');

    $('.b').on('click',function(){
      $('.a').replaceWith(state1);
    });
   }); 

http://jsfiddle.net/mw73enz8/11/