如果我有这样的东西,我可以通过这样做获得点击选择器的id。
$('#one, #two, #three').click(function(){
alert(this.id)
})
我的问题是,如果我有类而不是id,我如何获得所点击选择器的类名。
$('.one, .two, .three').click(function(){
// ??????
})
编辑:
点击的元素可能有多个类,我希望隔离用于最初选择元素的类。
答案 0 :(得分:12)
您使用原生.className
属性。
this.className
this.className
代替this.class
,因为class
是JavaScript中的保留字,有些浏览器不允许将保留字用作属性名称。
听起来元素上可能有多个类。要隔离一个,您可以将$.grep
与$.inArray
一起使用。
var classes = ['one','two','three'];
$('.' + classes.join(',.')).click(function(){
var classNames = this.className.split(/\s+/);
var cls = $.grep(classNames, function(c, i) {
return $.inArray(c, classes) !== -1;
})[0];
alert(cls);
});
DEMO: http://jsfiddle.net/rFT8j/
或者您可以使用$.each
代替$.grep
。
var classes = ['one','two','three'];
$('.' + classes.join(',.')).click(function(){
var classNames = this.className.split(/\s+/);
var cls;
$.each(classNames, function(i, c) {
if( $.inArray(c, classes) !== -1 ) {
cls = c;
return false;
}
});
alert(cls);
});
DEMO: http://jsfiddle.net/rFT8j/1/
如果你想要一些更简单的东西,一个解决方案是利用闭包,并分配单独的处理程序,每个处理程序在变量范围中引用不同的名称......
var classes = ['one','two','three'];
$.each(classes, function(i, c) {
$('.' + c).click(function(){
alert(c);
});
});
答案 1 :(得分:5)
只需使用JQuery的.attr来获取属性类值
alert($(this).attr("class"));
答案 2 :(得分:3)
$('.one, .two, .three').click(function(e){
console.log($(e.currentTarget).attr('class'))
})
答案 3 :(得分:0)
以下两种方法应该有效:
$('#one, #two, #three').click(function(){
alert(this.className)
})
$('#one, #two, #three').click(function(){
alert($(this).attr("class"))
})