Javascript 如何使我的函数被$(..).name()调用?

Javascript 如何使我的函数被$(..).name()调用?,javascript,jquery,Javascript,Jquery,我已经创建了一个名为draw()的js函数,现在是否可以在使用$(…)获取元素后,使用操作符调用此方法。我的意思是我喜欢这样做$(#myId).draw()。现在它给出了类似未定义函数的错误。如何使其工作?您必须将其创建为jquery插件。如本文所述 来自jQuery的文档: JSIDLE示例: 很难从你的问题中分辨出来,但听起来你想创建一个jQuery插件。您可以通过扩展$来实现这一点。fn: $.fn.draw = function(){ /* ... */ } 然后您可以对选

我已经创建了一个名为
draw()
的js函数,现在是否可以在使用
$(…)
获取元素后,使用
操作符调用此方法。我的意思是我喜欢这样做
$(#myId).draw()
。现在它给出了类似未定义函数的错误。如何使其工作?

您必须将其创建为jquery插件。如本文所述

来自jQuery的文档:

JSIDLE示例:


很难从你的问题中分辨出来,但听起来你想创建一个jQuery插件。您可以通过扩展
$来实现这一点。fn

$.fn.draw = function(){
    /* ... */
}
然后您可以对选择器调用它:

$('#myId').draw();
此处有更多文档:

您需要


最好的方法是使用jquery.fn.extend添加方法(因为我们可以一次添加几个插件函数)

示例代码如下所示

jQuery.fn.extend({
  draw: function() {
    return this.each(function() {
      // add code here to draw
    });
  }
});
添加此方法后,可以使用下面的代码对任何jQuery元素调用draw方法

$("#myId").draw()

官方参考:

您想要使用
jQuery.fn.extend
,这里有文档记录


现在您可以在使用
$(…)

创建的jQuery对象上调用
.draw
,是否希望像调用jQuery函数一样调用该方法?@RaviH:yes,就像默认方法一样。然后阅读关于如何编写jquery插件并使其成为jquery插件的内容。@WesleyMurch是的,它看起来是重复的,尽管我没有制作任何插件:P。我会将它标记为。操作符
与“调用函数”没有直接关系,但它会影响上下文
$(..).draw()
simple尝试调用从jQuery对象的
draw
属性返回的函数对象,该属性由
$(..)
返回。。在您的情况下,该属性不存在,并生成
未定义的
,从而引发异常。如前所述,在本例中实现此功能的正确方法是创建jQuery插件或“扩展”。出于兴趣,是否有任何理由认为
fn.extend
优于
fn.draw=…
?@Eru jQuery.fn.extend用于扩展jQuery.fn对象,这实际上是一次添加几个插件函数。啊,我明白了,你添加了一个完整的对象。谢谢
jQuery.fn.extend({
  draw: function() {
    return this.each(function() {
      // add code here to draw
    });
  }
});
$("#myId").draw()
$.fn.extend({
    draw: function() {

    // do something to the jQuery object
    return this;

    }
});