2016-09-14 55 views
1

我做一个测试(例如)函数,它的工作原理是这样的:jQuery的加入再次

function test(){ 
    var i = 0; 

    $('.container').click(function(){ 
     $(this).append('<div class="element"></div>'); 
     $('.element').click(function(){ 
      if (i >= 10){ 
       $('this').remove(); 
      } else { 
       i++; 
      } 
     }); 
    }); 
}; 
test(); 

当我点击类.container,一个div类名追加.element。当我点击这个div时,var i会上升,直到达到10.然后删除名为.element的div。

问题是,当我再次点击.container.element被删除后,i变量的行为就像它点击了两次。在那之后,等等。我如何抵消这一点?

+1

代码显示$,而不是$( '元')( '元素') –

+0

哦哎呦。这是一个例子,但它应该看起来不错:p –

+0

如果你可以分享你的jsfiddle,这将是伟大的 –

回答

2

你需要附加事件使用.on()

$('.container').click(function(){ 
     $(this).append('<div class="element"></div>'); 

    }); 

$('body').on('click','.element',function(){ 
    if (i >= 10){ 
     $(this).remove(); 
    } else { 
     i++; 
    } 
}); 

同时删除.container DIV中.element格事件处理程序

+1

'我'没有定义:) – LinkinTED

+1

谢谢!它非常完美!我会在时间限制结束后将答案标记为'accepted' –

+0

我明白,但'var i = 0'是唯一缺失的行。 – LinkinTED

0

另一种方法是这样的

元素绑定动态添加元素您还可以使用on/bind方法将事件附加到动态元素。

$(document).on('click','.element',function(){ 
    if (i >= 10){ 
     $(this).remove(); 
    } else { 
     i++; 
    } 
}); 

OR

$(document).bind('click','.element',function(){ 
     if (i >= 10){ 
      $(this).remove(); 
     } else { 
      i++; 
     } 
    }); 
0

您可以定义click事件.element像下面。

var i = 0; 
 

 
function test() { 
 
    $('.container').click(function() { 
 
    $(this).append('<div class="element"></div>'); 
 
    }); 
 
}; 
 
test(); 
 

 
$('body').on('click', '.element', function() { 
 
    if (i >= 10) { 
 
    $('this').remove(); 
 
    } else { 
 
    i++; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="container"> 
 
    Click Me! 
 
</div>