Mohit Jain
Mohit Jain

Reputation: 43939

Add onclick event on various elements on the basic of CSS class

I have various elements on a single page. They share a single class. I want to add a onclick event on all those elements using prototype.

For id I can do something like this:

Event.observe(window, 'load',
   function() {
$('id_of_the_element').addEventListener('onclick',any_function,true);
  }
);

This is good if we have id of the element. I want to do the same using CSS class, cause all the element share same class.

Update:

document.observe("dom:loaded", function() {
   $$('.message').invoke('observe', 'click', hide_all_messages)
});

function hide_all_messages()
{
$$('.message').hide();
}

This is not working.

error:

hide is not a function

Upvotes: 1

Views: 4258

Answers (2)

robjmills
robjmills

Reputation: 18598

a more succinct solution would be to use invoke:

$$('.elements').invoke('observe', 'click', yourfunction)

You can set this to run when the dom is ready by placing it within this code:

document.observe("dom:loaded", function() {
    $$('.elements').invoke('observe', 'click', yourfunction)
});

EDIT - this will fix your other issue:

function hide_all_messages(){
    $$('.message').invoke("hide");
}

Upvotes: 1

remi bourgarel
remi bourgarel

Reputation: 9389

$$('.myClass').each(
  function(element){
    Event.observe("click",element,any_function);
}
);

you got it !

Upvotes: 1

Related Questions