2009-07-10 16 views
5

有淡出在互聯網樣品.. http://docs.dojocampus.org/dojo/fadeOut?t=tundra道場,怎麼辦onclick事件上一個DIV

,但我想做些不同的事.. 我希望人們直接點擊文本,然後將文字會淡出。

在我的代碼

有一個div自動換行

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

代碼,如下所示,我想要的是,當人們在textDiv內的任意位置單擊,然後 整個textDiv會褪色away..hmm .....爲什麼我的代碼不工作?

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'); 
    dojo.style(objectId, "opacity", "1"); 
    var fadeArgs = { 
     node: objectId, 
     duration: 2000 
    }; 
    dojo.fadeOut(fadeArgs).play(); 

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

回答

8

如果我明白你正在嘗試做的,我想你可以用這個完成它:

HTML

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

的JavaScript

// 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 
    dojo.style(this, "opacity","1"); 
    // do fade out 
    dojo.fadeOut({ 
     node: this, 
     duration: 2000, 
     // pass in an onEnd function ref that'll get run at end of animation 
     onEnd: function() { 
     // get rid of it  
     dojo.query(el).orphan() 
     } 
    }).play() 
    }); 
}); 

點擊將bu bble了所以它會通過textDiv.

這裏被抓的一些有用的鏈接:

讓我知道如果我誤解你的問題,我會更新我的答案。希望這可以幫助。