我如何查看$(this)是什么?

时间:2010-09-28 14:23:02

标签: jquery css hyperlink

此问题与this post有关,但我不知道如何在同一问题中提出其他问题。

我需要知道$(this)这是什么。如果我提醒$(this),我会[object Object]。换句话说,当我alert($(this))时,我需要将结果作为特定的<li>标记,以便在我滚动特定链接时可以执行IF ELSE语句。

感谢。 詹姆斯

5 个答案:

答案 0 :(得分:5)

在处理程序中,this是DOM元素。因此,要获取标记,只需使用tagName属性即可。同样,您可以使用this.id获取ID等其他属性。

alert( this.tagName );
alert( this.id );

或者如果您需要针对特定​​选择器进行测试(我不确定您的问题),您可以使用jQuery的.is()

if( $(this).is('.someClass') {...

(实际上,在测试类的简单情况下,您可能会使用.hasClass()代替。)

if( $(this).hasClass('someClass') {...

可能有更有效的方法。取决于您实际需要测试的内容。


编辑:在评论中,您要检查子<a>元素是否具有班级rpSelected

试试这个:

if( $(this).children('a.rpSelected').length == 0 ) {
       // remove the class

答案 1 :(得分:0)

要从jQuery对象中获取第一个元素,请使用indexer

var val = $(this);
...
var domElement = val[0]; //domElement == this (from above)

获取HTML:

var val = $(this);
...
var html = val[0].html();

修改
阅读你的评论,你在<li>元素内寻找一个班级吗?

var isSelected = $(this).find('a.rpSelected').length > 0;

答案 2 :(得分:0)

如果要检查当前对象及其值是什么,请编写此console.log(this); 并打开萤火虫&gt;安慰。

答案 3 :(得分:0)

您可以使用什么来查看所有属性是一个类似于PHP print_r函数的函数:

function print_r(theObj){
  if(theObj.constructor == Array ||
     theObj.constructor == Object){
    document.write("<ul>")
    for(var p in theObj){
      if(theObj[p].constructor == Array||
         theObj[p].constructor == Object){
document.write("<li>["+p+"] => "+typeof(theObj)+"</li>");
        document.write("<ul>")
        print_r(theObj[p]);
        document.write("</ul>")
      } else {
document.write("<li>["+p+"] => "+theObj[p]+"</li>");
      }
    }
    document.write("</ul>")
  }
}

输出它只需使用print_r($(this));

答案 4 :(得分:0)

如果您只想按 this 关键字所代表的标记名称执行条件语句,可以使用以下代码实现此目的。

if ( $(this).is('li') ) {
    ...
} else if ( $(this).is('ul') ) {
    ...
} else if ( $(this).is('a') ) {
    ...
}

请注意,关键字 this 是指指向我们正在执行的功能的“所有者”。所以你需要确定谁在调用函数...