如何创建简单的 jQuery 插件?

Posted

技术标签:

【中文标题】如何创建简单的 jQuery 插件?【英文标题】:How to create simple jQuery plugin? 【发布时间】:2012-07-05 12:59:00 【问题描述】:

这个测试插件应该是这样工作的:当一个元素被点击时,它会向下移动。就那么简单。

jQuery.fn.moveDown = function(howMuch)
    $(this).css("border", "1px solid black");
    $(this).click(function()

        $(this).css("position", "relative");
        $(this).animate(top: '+='+howMuch);
    ); 

问题是,当一个元素被点击时,它不仅会移动被点击的元素,还会移动应用插件的所有其他元素。

解决办法是什么?

【问题讨论】:

我在 Chrome 上测试过,似乎效果很好。 它有效。但不是应该的。当一个元素被点击时,所有应用了插件的元素也会移动。唯一应该移动的元素是被点击的元素。 嗯,这就是我检查的。我使用 $("#el1").moveDown("100px")$("#el2").moveDown("100px") 将它应用于两个元素.当我单击一个元素时,只有那个元素移动了。 【参考方案1】:

如果您安装了 Node.js,您可以使用 create-jquery-plugin CLI 实用程序。跑吧

npx create-jquery-plugin

或者,您可以克隆jquery-plugin-boilerplate 开始吧。

【讨论】:

【参考方案2】:

在这里我想建议一些步骤来创建带有参数的简单插件。

JS

(function($) 
    $.fn.myFirstPlugin = function( options ) 

        // Default params
        var params = $.extend(
            text     : 'Default Title',
            fontsize : 10,
        , options);
        return $(this).text(params.text);

    
(jQuery));

在这里,我们添加了名为params 的默认对象,并使用extend 函数设置选项的默认值。因此,如果我们传递空白参数,那么它将设置默认值,否则它将设置。

HTML

$('.cls-title').myFirstPlugin( text : 'Argument Title' );

阅读全文: How to Create JQuery plugin

原答案 Here i want to suggest steps to create simple plugin with arguments

【讨论】:

【参考方案3】:

对于插件创作尝试这种方式,更可靠:

编辑: Here is working jsFiddle example.


插件:

(function($)
    $.fn.extend(
        YourPluginName: function(options) 
                var defaults = 
                      howMuch:'600',
                      animation: '',//users can set/change these values
                      speed: 444,
                      etc: ''
                
        ;

       options = $.extend(defaults, options);

       return this.each(function() 
          var $this = $(this);              
          var button = $('a', $this);// this represents all the 'a' selectors;
                                            // inside user's plugin definition.

          button.click(function() 
            $this.animate('top':options.howMuch);//calls options howMuch value
          );
       );
)(jQuery);

用户文件:

$(function() 
   $('#plugin').YourPluginName(
     howMuch:'1000' //you can give chance users to set their options for plugins
   );
);

<div id="plugin">
  <a>1</a>
  <a>2</a>
  <a>3</a>
</div>

【讨论】:

不错的插件人,我认为你错过了插件的关闭,无论如何真的很棒的工作。这是用于测试的fiddle。 谢谢伙计,我看到了关闭错误并对其进行了编辑。它开着; var defaults =

以上是关于如何创建简单的 jQuery 插件?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery插件如何从插件内的函数中获取价值

Sidr是一个用于创建辅助菜单的jQuery插件,也是实现菜单响应的最简单方法。

如何创建一个基本JQuery的插件

jQuery 验证插件:如何创建自己的消息

如何创建一个 jQuery 函数(一个新的 jQuery 方法或插件)?

创建jq插件步骤