Javascript 我需要创建一个小的jquery插件,但是有一个非常奇怪的问题

Javascript 我需要创建一个小的jquery插件,但是有一个非常奇怪的问题,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,检查这里 当我单击任何按钮时,它会提醒第一个按钮的数据id属性 但是我需要它来显示单击按钮的数据id attr。问题是在单击处理程序中使用base,您应该在这里使用此,因为base是插件附加到的所有匹配元素,而不仅仅是单击的元素 您应该这样做,删除base变量,然后返回this.each(…),使其可链接 $(function() { $.fn.my_alert = function() { return this.each(function() {

检查这里

当我单击任何按钮时,它会提醒第一个按钮的数据id属性


但是我需要它来显示单击按钮的数据id attr。

问题是在单击处理程序中使用
base
,您应该在这里使用
,因为
base
是插件附加到的所有匹配元素,而不仅仅是单击的元素

您应该这样做,删除
base
变量,然后返回
this.each(…
),使其可链接

$(function() {
    $.fn.my_alert = function() {
        return this.each(function() {
            $(this).on('click', function(e) {
                alert( $(this).data('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') );
            });
        });
    }
});

插件中的
base
是一个包含多个元素的jQuery对象。↑↑↑↑ 而
attr()
getter只返回集合中的第一个元素属性,因此在插件中使用
$(this)
而不是
base
base
是一个包含多个元素的jQuery对象。↑↑↑↑ 而
attr()
getter只返回集合中的第一个元素属性,所以使用
$(这个)
not
base
谢谢Adeneo,我的插件的主要功能是弹出检查这里我想如果有人点击save changes按钮,它会将弹出内容放在弹出内容所在的隐藏div中,但是如果有人点击cancel按钮或黑色覆盖,它会将相同的内容放在隐藏div中,而不显示任何内容变化。感谢Adeneo,我的插件的主要功能是弹出检查这里我想如果有人点击保存变化按钮,然后它把弹出内容到隐藏的div从弹出内容采取。但如果有人点击取消按钮或黑色覆盖,那么它应该把相同的内容在隐藏div没有任何变化。