0
$.fn.foo = function() {
    console.log($(this));
};

$("#foo").foo();

$(document).foo();

我如何判断$(this)函数内的天气是$(document)与否?


这个问题上,人们建议

1. if (obj instanceof HTMLDocument)

2. if (Object.prototype.toString.call(obj) == "[object HTMLDocument]")

3. $obj.is('html')

但它们都不起作用。

4

2 回答 2

9

何况简单...

if (this[0] === document)

...因为thisjQuery 函数内部对应于 jQuery 对象(不是 HTML 对象)。即使这个对象是空的,this[0]它仍然是一个有效的表达式——它只是undefined.

另一种方法是使用 jQuery is方法:

if ($(this).is(document))

...因为它也接受DOMElement作为参数。

于 2013-03-22T14:27:35.760 回答
0
$.fn.foo = function() {
    console.log(this[0] == document);
};

$("#foo").foo();

$(document).foo();
于 2013-03-22T14:41:48.007 回答