tags:

views:

214

answers:

3

i have a DOM element with class='tag'.

i want to check if the class value is tag and alert a message if its true.

i wrote:

    $("#thread").each(function(event) {
        if(event.target.class == 'tag') alert('yes');
    });

but it didnt worked. you can get the id with event.target.id but not the class with this code? what are all the values you can have after event.target?

A: 

At first, the event argument work only for event handlers, and you are using the $.each method.

I don't really think that you want/need to use the $.each method, since you are using an #id selector, and id's should be unique.

To check if an element contains an specific class you can use the hasClass method:

if ($("#thread").hasClass('tag')) {
  //...
}

Also if you have a DOM element, to get it's class attribute, you should access it with className instead class, that's because class is a future reserved word in JavaScript, the same thing happens with other attributes like for, should be accessed as htmlFor...

CMS
where can i find all the attributes to use with event.target?
weng
it says event.target is undefined?
weng
+1  A: 

you are using jquery's each method incorrectly. it takes two arguments, neither one of them is an event (that would respond to the target property). from the docs:

$.each([52, 97], function(index, value) { 
  alert(index + ': ' + value); 
});

See CMS's answer for the proper way of checking if elements have a given class name.

floyd
A: 

Here you go.

$("div").each(function (index, domEle) {
    if (domEle.hasClass("tag")) {
        console.log('yes');
    } else {
        console.log('no');
    }
});
Jabes88