javascript - 同一页面上有多个 JQuery 插件

标签 javascript jquery asp.net

我想知道是否有一个简单的解决方案: 我在网格中定义的元素上多次创建了以下 JQuery 插件

(function ($) {
    $.fn.MyPlugin = function () {

        $(this).mouseenter(function () {
           //do something for single plugin instance
        });
    };

})(jQuery);

但是,我如何才能唯一地识别我正在触发鼠标输入功能的插件实例。在当前设置中,我引用了所有实例,但我只想同时触发其中一个实例的 mouseenter。

插件的创建方式如下:

$(".someClass").MyPlugin(); 

最佳答案

您不需要多次创建插件,这就是它被称为插件的原因。您只需将其插入任何您想要的地方即可。看看jquery plugins authoring page关于如何开始编写插件。它提供了一些不错的模板。

在您的代码中 $(this) 是多余的,因为 this 已经是一个 jQuery 对象。然后,您需要始终返回此以保持插件的可链接性。您可以在 moousenter 事件中使用 $(this) 来引用 DOM 中插件正在处理的当前元素。

有时,返回 this.each() 并循环每个元素并执行某些操作也很有用。在这种情况下,由于您附加了一个事件,因此它没有帮助,因为事件适用于项目集合中的每个项目;在本例中,this 指的是您调用插件的集合:

$.fn.MyPlugin = function () {

    return this.mouseenter(function () {
       $(this).something();
       //do something for single plugin instance
    });

};

然后你可以像这样调用插件:

$('elements').MyPlugin();

只需在所需的元素上调用插件,这些元素就会附加 mouseenter 事件。

关于javascript - 同一页面上有多个 JQuery 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10306455/

相关文章:

java - 使用 GSON 将 java.time.LocalDateTime (java 8) 序列化为 js Date 的最佳实践

javascript - 如何使用 Firebase 实时数据库将信息从一个用户发送到另一用户?

javascript - 使用显示属性淡入淡出

javascript - 模态 - 内容在较小的显示器上脱离模态?

c# - Page_Load 问题

c# - ASP.NET Web API - 未获取对 Controller 文件的更改

javascript - ng-模型值未定义

javascript - 使用 Google 跟踪代码管理器时 Google Analytics 自定义事件未触发

javascript - 未捕获错误 : Bootstrap's JavaScript requires jQuery version 1. 12.4 或更高版本,但低于日期时间选择器中的版本 3

c# - ASP.NET 中的静态方法问题