Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery插件语法_Jquery - Fatal编程技术网

jquery插件语法

jquery插件语法,jquery,Jquery,我正在尝试创建jquery插件,我希望有以下选项: $.plugin\u名称(变量) $(选择器)。插件名称(变量) 第一种情况下,插件不需要应用于某个元素(例如,它可以创建一个),第二种情况下,同一插件将对所选元素执行任何操作 我的问题是:如何在插件中指定: if (selector is not given) { create an element } else { ( for example) insert variable in elements matching the sel

我正在尝试创建jquery插件,我希望有以下选项:

  • $.plugin\u名称(变量)

  • $(选择器)。插件名称(变量)

  • 第一种情况下,插件不需要应用于某个元素(例如,它可以创建一个),第二种情况下,同一插件将对所选元素执行任何操作

    我的问题是:如何在插件中指定:

    if (selector is not given) {
      create an element
    } else {
      ( for example) insert variable in elements matching the selector
    }
    

    对于在jQuery对象上操作的插件,可以使用
    jQuery.fn.myPluginName=function()..

    对于
    jQuery
    命名空间中的独立函数,只需设置
    jQuery.func\u name=function()…

    例如:

    jQuery.fn.erase = function() {
       return this.each(function() {
           jQuery(this).remove();
       });
    };
    
    jQuery("body").erase();
    
    jQuery.erase = function(element) {
       jQuery(element).erase();
    };
    
    jQuery.erase("body"); // exact same result.
    

    要涵盖
    $。plugin\u name()
    请使用:

    jQuery.plugin_name = function(data) {
      // do stuff
    }
    
    jQuery.fn.plugin_name = function() {
      return this.each(function() {
        // do stuff
      });
    };
    
    对于
    $(选择器)。插件名称()
    使用:

    jQuery.plugin_name = function(data) {
      // do stuff
    }
    
    jQuery.fn.plugin_name = function() {
      return this.each(function() {
        // do stuff
      });
    };
    

    请参阅。

    使用
    $.myFunc
    只需向jQuery命名空间添加一个函数

    通过使用
    $.fn.myFunc
    ,您正在扩展jQuery原型,这意味着函数中的this关键字将表示从选择器返回的jQuery对象

    如果您想让它们做相同的事情,可以检查jQuery实例并创建新元素:

    试试这个:

    $.myFunc = $.fn.myFunc = function(first, second) {
        if (!(this instanceof $)) {
            return $.fn.myFunc.apply($('<div>'), arguments);
        }
        // begin plugin code here:
        return this.each(function() {
            $(this).text(first + ' ' + second);
        });
    };
    
    // now you can call myFunc in two ways:
    
    $('<div>').myFunc('foo','bar').appendTo('body') 
    
    $.myFunc('bar','foo').appendTo('body');
    
    $.myFunc=$.fn.myFunc=函数(第一,第二){
    如果(!(此实例为$){
    返回$.fn.myFunc.apply($(''),参数);
    }
    //在此处开始插件代码:
    返回此值。每个(函数(){
    $(此).text(第一个+“”+第二个);
    });
    };
    //现在,您可以通过两种方式调用myFunc:
    $('').myFunc('foo','bar')。appendTo('body'))
    $.myFunc('bar','foo')。appendTo('body');
    
    我真的想知道是否有一种方法可以编写一个插件,它可以同时完成这两项功能。。。如果没有给出选择器,它将创建一个元素……因此理想情况下,它可以同时被称为$.pluginName()或$(选择器)。pluginName()而不是或。谢谢你这是不可能的,至少我是这么理解的