这是我的小插件:jsfiddle
$(function() {
$.fn.my_alert = function() {
this.each(function() {
$(this).bind("click", function(e) {
alert($(this).attr('data-id'));
});
});
}
});
$(document).ready(function() {
$('.myalert').my_alert();
$('.add-more').click(function() {
var uniq = new Date().valueOf();
var newHtml = "<button class='myalert' data-id='" + uniq + "' >show alert</button>";
$('body').append(newHtml);
$('.myalert').my_alert();
});
});
如果我在添加新按钮后调用插件,那么alert
旧项目上的id
不止一次,但如果我在添加新按钮后没有调用它,那么它就不会处理新按钮。
我在哪里做错了什么?
答案 0 :(得分:0)
问题在于,当您创建新的button
时,您将在所有 .myalert
元素上实例化插件的另一个实例。相反,只需在新按钮上实例化它,如下所示:
$('.add-more').click(function() {
var uniq = new Date().valueOf();
$('<button class="myalert" data-id="' + uniq + '">show alert</button>').appendTo('body').my_alert();
});
答案 1 :(得分:0)
修复您的问题fiddle
$(function(){
$.fn.my_alert = function(){
this.each(function() {
$( this ).bind("click",function(e){
alert($( this ).attr('data-id'));
});
});
}
});
$(document).ready(function(){
$('.myalert').my_alert();
$('.add-more').click(function() {
var uniq = new Date().valueOf();
var newHtml = $("<button class='myalert' data-id='"+uniq+"' >show alert</button>");
$('body').append(newHtml);
newHtml.my_alert();
});
});