从JavaScript调用jQuery函数

从JavaScript调用jQuery函数,javascript,jquery,Javascript,Jquery,我有一些jQuery代码: $(function(){ function someFunc(){ /*do something*/ }; ............. }); 现在我想从JavaScript调用someFunc,如下所示: function test(){ $.fn.someFunc(); } 但它不起作用!我看过一篇文章。可能吗 仅仅在传递给$()的闭包(函数)中定义函数并不能将其放在jQueryfn对象上。要做到这一点,您必须明确地做到: $.fn.

我有一些jQuery代码:

$(function(){ 
function someFunc(){
    /*do something*/
};
.............   
});
现在我想从JavaScript调用someFunc,如下所示:

function test(){    
$.fn.someFunc();
}

但它不起作用!我看过一篇文章。可能吗

仅仅在传递给
$()
的闭包(函数)中定义函数并不能将其放在jQuery
fn
对象上。要做到这一点,您必须明确地做到:

$.fn.someFunc = someFunc;
通常,您不会在
$()
上的回调中执行此操作,而是更早执行此操作。插件这样做是为了添加功能,这些功能应该在DOM就绪之前就已经存在了

举个例子,这里有一个愚蠢的小插件,它将文本变成绿色:

(function($) {
  $.fn.green = green;
  function green() {
    return this.css("color", "green");
  }
})(jQuery);
…可以从DOM ready中使用:

jQuery(function($) {

  $(".foo").green();

});
|


请注意,对它的调用来自jQuery实例,而不是直接来自
$。fn

您的函数
someFunc
不是一个“jQuery函数”,它是在(jQuery)
DOMContentLoaded
事件处理程序中定义的函数

您无法从外部访问它,因为它超出范围。只需在加载处理程序外部声明它,就可以访问它:

$(function(){ 
    // nothing here , but you can call someFunc() if you want
});

function someFunc(){
    /*do something*/
};

function test(){    
    someFunc(); // works!
}
在jquery中

$.fn.someFunc = myFunc;
function myFunc()
{
    // Code here
}
与普通javascript类似

function myObj()
{
    // Code here
}
var obj= new myObj();
obj.prototype.someFunc=myFunc;
function myFunc()
{
    // Code here
}
这只是向对象添加新属性的一种方式(原型继承),jquery的fn只是javascript原型的别名。调用我在前面添加到jquery对象的“sumFunc”方法,使用

$.fn.someFunc = myFunc;
我能行

$('someElement').someFunc();

这一行将调用taht函数并对“someElement”执行一些操作(尽管我什么也没做),希望它足够清晰。看看T.J.Crowder的答案,它会让你更加理解。

someFunc
只是在另一个函数中定义的函数。。。它与jQuery无关。“…jQuery的fn只是javascript原型的别名…”你的意思是
jQuery.prototype
(奇怪的是,这也是从
jQuery.fn.init.prototype
引用的,因为jQuery使用
新建jQuery.fn.init
来创建实例)。是的,请看一下,我的理解错了吗?
@Sheikh Heera
:我不理解你的问题。链接所做的只是(不完全地)重申我上面所说的。请注意,“javascript”!=“jquery”。@T.J.Crowder,我问你我当时是对是错,我说“jquery的fn只是javascript原型的别名”,我的理解错了吗?
@Sheikh Heera
:“javascript原型”是什么?这句话本身对我来说没有任何意义。这就是我说“JavaScript!=jQuery”的原因,感谢您的简单解释。