此问题与this post有关,但我不知道如何在同一问题中提出其他问题。
我需要知道$(this)
这是什么。如果我提醒$(this)
,我会[object Object]
。换句话说,当我alert($(this))
时,我需要将结果作为特定的<li>
标记,以便在我滚动特定链接时可以执行IF ELSE语句。
感谢。 詹姆斯
答案 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 是指指向我们正在执行的功能的“所有者”。所以你需要确定谁在调用函数...