关于jquery函数的调用机制

时间:2012-06-19 18:37:30

标签: jquery

假设我创建了一个jQuery函数来检查元素是否存在,如:

jQuery.fn.exists = function () { 
    return this.length > 0; 
}

然后我打电话给:

if ($("#MyDiv").exists() == false)
   alert('not exist');
else
   alert('exist');

如果我在上面调用jQuery函数就行了。但我们不能像这样exists('#MyDiv')调用jquery函数吗?如果我试着这样打电话,那么我没有得到结果......为什么?

4 个答案:

答案 0 :(得分:2)

ARRG,请不要使用这个无用的exist函数!

可以简单地用:

if ($('#MyDiv').length)
    // Exist
else
    // Doesn't exist.

不需要插件,每个人都知道此代码的作用,不要使用exist

答案 1 :(得分:1)

尝试如下,

$.exists = function (selector) {
    return $(selector).length > 0;
}

并使用as,

$.exists('#test') 

DEMO: http://jsfiddle.net/skram/hgaPt/1/

请在更大的图片中使用它,将它用于简单的事情,因为存在只是一种矫枉过正。

答案 2 :(得分:0)

exists('#MyDiv')

这不起作用,因为你没有创建一个名为exists的函数。您创建了一个名为jQuery.fn.exists的函数(jQuery.fn是jQuery对象的prototype

要使exists('#MyDiv')生效,您需要创建一个名为exists的函数。

function exists(sel){
    return $(sel).length;
}

答案 3 :(得分:0)

$.fn等于$.prototype,因此间接使用$.fn将您的函数挂钩到jQuery对象原型,因此选择器需要传递给jQuery对象而不是链接函数名。