我需要创建一个小的 jquery 插件,但是有一个很奇怪的问题
I need to create a small jquery plugin, but there is very strange issue
点这里jsfiddle
$(function(){
$.fn.my_alert = function(){
var base = this;
base.init = function() {
base.on('click',function(e) { base.onClick(); });
}
base.onClick = function(){
alert(base.attr('data-id'));
}
base.init();
}
});
$(document).ready(function(){
$('.myalert').my_alert();
});
当我点击任何按钮时,它会提醒第一个按钮的 data-id 属性,
但我需要它来显示单击按钮的数据 ID 属性..
问题是在点击处理程序中使用 base
,您应该在这里使用 this
,因为 base
是插件附加到的所有匹配元素,而不是只是点击的元素。
您应该改为这样做,删除 base
变量,并返回 this.each(...
以使其可链接
$(function() {
$.fn.my_alert = function() {
return this.each(function() {
$(this).on('click', function(e) {
alert( $(this).data('id') );
});
});
}
});
点这里jsfiddle
$(function(){
$.fn.my_alert = function(){
var base = this;
base.init = function() {
base.on('click',function(e) { base.onClick(); });
}
base.onClick = function(){
alert(base.attr('data-id'));
}
base.init();
}
});
$(document).ready(function(){
$('.myalert').my_alert();
});
当我点击任何按钮时,它会提醒第一个按钮的 data-id 属性,
但我需要它来显示单击按钮的数据 ID 属性..
问题是在点击处理程序中使用 base
,您应该在这里使用 this
,因为 base
是插件附加到的所有匹配元素,而不是只是点击的元素。
您应该改为这样做,删除 base
变量,并返回 this.each(...
以使其可链接
$(function() {
$.fn.my_alert = function() {
return this.each(function() {
$(this).on('click', function(e) {
alert( $(this).data('id') );
});
});
}
});