2

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

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

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

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

解决方案是什么?

4

3 回答 3

5

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

编辑: 这是工作 jsFiddle 示例。


插入:

(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>
于 2012-07-05T06:44:10.613 回答
0

在这里,我想建议使用参数创建简单插件的步骤。

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' });

阅读更多: 如何创建 JQuery 插件

原始答案 在这里我想建议使用参数创建简单插件的步骤

于 2016-04-07T06:14:23.580 回答
0

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

npx create-jquery-plugin

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

于 2020-07-21T16:37:36.667 回答