这是我的问题。我有这段代码:
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点击功能。所以它有效,但只是第一次。谢谢你的帮助
答案 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();
});
});
}
答案 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);
});
});