检查'this'是$(this)还是只是普通的'this'

时间:2012-08-21 15:57:03

标签: javascript jquery

我有一个功能:

function myFunction(){
var id = $(this).attr('id');
}

现在有时,myFunction会以$(this)作为上下文调用,但有时上下文只是'this'。

在一行中我怎么能做类似的事情:

if(this == $(this)){
var e = $(this);
}

基本上是一个测试,看看'this'是jQuery'this'还是JS'this'。

可能的?

4 个答案:

答案 0 :(得分:12)

if (this.jquery) { // refers to jQuery version
  // jQuery object
}

可替换地:

if (this instanceof jQuery) { // prototype chain
  // jQuery object
}

但是,正如其他人所说,无论真正重要,$(this)无论thisjQuery对象还是DOM元素都会有效。

答案 1 :(得分:3)

var e = $(this)是jQuery对象时,或者如果不是jQuery对象,您也可以this

答案 2 :(得分:2)

处理它的一种方法就是始终将其包装在$(...)中。包装这样的jQuery对象会创建一个克隆(参见jQuery docs),所以这个HTML:

<a href="test" id="​​​​​​​​​​​​​​​​​​​​​​​​​test-link">Test Link</a>​​​​​​​​​​​​​​​​​​​​​​​

用这个JS:

​var link = $('#test-link');
var doubleWrappedLink = $(link);

alert(doubleWrappedLink.attr('href'));​​​​​​​

会正确弹出“测试”。

答案 3 :(得分:0)

您可以使用以下代码段:

if (obj instanceof jQuery || 'jquery' in Object(obj)) { }

请看一下: Check if object is a jQuery object