Javascript – Dojo, how to do onclick event on a DIV


There was a fade out sample in the internet..

but i want to do something different..
i want people directly click on the text then the text will fade out.

in my code there is a div wrap the text

<div id='parentNode'>
    <div id='textDiv' onClick='whenClickAnyWhereWithinThisDiv_performFadeOut()'>
       <div id='iconDiv'/>
       <div id='messageDiv'/>

Code as show below, what i want is, when people click anywhere within the textDiv,
then the whole textDiv will fade away..hmm…..why my code doesn`t work???

function whenClickAnyWhereWithinThisDiv_performFadeOut () {
    dojo.connect(dijit.byId('textDiv'), "onClick", fadeOutAndRemove(parentNode, textDiv));
function fadeOutAndRemove (parent, currentDiv) {
    // just assume i can get the parent Node, and the current div, which will be textDiv       

    var objectId = currentDiv.getAttribute('id');, "opacity", "1");
    var fadeArgs = {
        node: objectId,
        duration: 2000

    setTimeout(function() { parent.removeChild(currentDiv);}, 2000);

Best Solution

If I understand what you are trying to do, I think you can accomplish it with this:


 <div id='parentNode'> 
    <div id='textDiv'> 
      <div id='iconDiv'>this is icon div</div> 
      <div id='messageDiv'>this is message div</div> 


// do it when the DOM is loaded
dojo.addOnLoad( function() {
  // attach on click to id="textDiv"
  dojo.query('#textDiv').onclick( function(evt) { 
    // 'this' is now the element clicked on (e.g. id="textDiv")
    var el = this; 
    // set opacity, "opacity","1"); 
    // do fade out
      node: this, 
      duration: 2000, 
      // pass in an onEnd function ref that'll get run at end of animation
      onEnd: function() { 
        // get rid of it     

The click will bubble up so it'll be caught by textDiv.

Here are some helpful links:

Let me know if I misunderstood your question and I'll update my answer. Hope this helps.