Possible Duplicate:
Get Class List for Element with jQuery
如果我有这样的事情,我可以通过这样做来获得被点击的选择器的 ID。
$('#one, #two, #three').click(function(){
alert(this.id)
})
我的问题是,如果我有类而不是 id,我如何获得单击的选择器的类名。
$('.one, .two, .three').click(function(){
// ??????
})
编辑:
被点击的元素可能有多个类,我希望隔离最初用于选择元素的类。
您将使用 native .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);
});
演示: 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);
});
演示: http://jsfiddle.net/rFT8j/1/
如果你想要一些更简单的东西,一个解决方案是利用闭包,并分配单独的处理程序,每个处理程序在变量范围内引用不同的名称...
var classes = ['one','two','three'];
$.each(classes, function(i, c) {
$('.' + c).click(function(){
alert(c);
});
});
演示: http://jsfiddle.net/rFT8j/3/