You'd use the native .className
property.
this.className
It's this.className
instead of this.class
because class
is a reserved word in JavaScript, and some browsers haven't allowed reserved words to be used as property names.
It sounds like there could be multiple classes on an element. To isolate one, you can use $.grep
with $.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/
Or you could use $.each
instead of $.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/
If you want something a little simpler, one solution would be to take advantage of closures, and assign separate handlers that each reference a different name in the variable scope...
var classes = ['one','two','three'];
$.each(classes, function(i, c) {
$('.' + c).click(function(){
alert(c);
});
});
DEMO: http://jsfiddle.net/rFT8j/3/