我有一个功能:
function myFunction(){
var id = $(this).attr('id');
}
现在有时,myFunction 会以 $(this) 作为上下文调用,但有时上下文只是“this”。
在一行中,我该如何做类似的事情:
if(this == $(this)){
var e = $(this);
}
基本上是一个测试,看看 'this' 是 jQuery 'this' 还是 JS 'this'。
可能的?
我有一个功能:
function myFunction(){
var id = $(this).attr('id');
}
现在有时,myFunction 会以 $(this) 作为上下文调用,但有时上下文只是“this”。
在一行中,我该如何做类似的事情:
if(this == $(this)){
var e = $(this);
}
基本上是一个测试,看看 'this' 是 jQuery 'this' 还是 JS 'this'。
可能的?
if (this.jquery) { // refers to jQuery version
// jQuery object
}
或者:
if (this instanceof jQuery) { // prototype chain
// jQuery object
}
但是,正如其他人所说,这并不重要,$(this)
无论是否this
已经是jQuery
对象或 DOM 元素都可以。
你也可以只做var e = $(this)
whenthis
是一个 jQuery 对象,或者如果它不是。
处理它的一种方法是始终将其包装在$(...)
. 像这样包装一个 jQuery 对象会创建一个克隆(请参阅jQuery 文档),所以这个 HTML:
<a href="test" id="test-link">Test Link</a>
用这个 JS:
var link = $('#test-link');
var doubleWrappedLink = $(link);
alert(doubleWrappedLink.attr('href'));
将正确弹出“测试”。