Ajax在动态创建的元素上激活了很多次

时间:2013-11-01 17:22:07

标签: jquery plugins jquery-plugins

我正在使用这个插件jrating。 https://github.com/alpixel/jRating

HTML

<button class="btn">ADD</button>


<div id="doc"></div>

JQUERY

$(document).on('click', '.btn', function () {
    $('#doc').append('aaa<div class="rating" id="0_5"></div>');
    $('.rating').jRating();
});
$('.rating').jRating();

当我动态添加新的div到doc。如果我在点击功能中不使用$('.rating').jRating();,则不会显示评分。

问题:当我动态追加四个div并点击第一个附加的div时,ajax会触发4次。这继续4所有其他元素。比如点击第3个附加div 3次,第2次2次。不知道为什么会发生这种情况

小提琴:http://jsfiddle.net/TFWXG/

1 个答案:

答案 0 :(得分:5)

当您在点击处理程序中执行$('.rating').jRating();时,您会一次又一次地初始化页面中存在的所有rating元素的插件,而不是仅为新元素初始化

$(document).on('click','.btn',function(){
   $('aaa<div class="rating" id="0_5"></div>').appendTo('#doc').jRating();    
});