ehs*_*n7b 2 javascript events javascript-events google-closure google-closure-library
使用Google Closure库:
如何处理单击element
例如a div
但阻止event handler
在用户单击该元素的子元素时触发.
例如,在下面的代码中我想触发event handler
用户单击时,div1
但是当他/她单击"span1"时,我希望event handler
在不触发处理程序的情况下调用另一个div1
.
<div style="width: 400px" id="div1">
<span id="span1">click me to reload</span>
click here to Toggle accordion
</div>
Run Code Online (Sandbox Code Playgroud)
UPDATE
JS代码:
/**** accordion ***/
var panels = goog.dom.getElementsByClass('newsColumnHeader', goog.dom.getElement('accordionContainer'));
var anims = {};
var open = null;
goog.array.forEach(panels, function(pane){
var animation = new goog.ui.AnimatedZippy(pane, goog.dom.getNextElementSibling(pane));
goog.events.listen(animation, goog.ui.Zippy.Events.TOGGLE, zippyToggle);
anims[goog.getUid(animation)] = animation;
});
function zippyToggle(event) {
var uid = goog.getUid(event.target);
// simple logic - only one open panel in one time
if (event.expanded && uid != open) {
if (open) {
anims[open].setExpanded(false);
}
open = uid;
}
}
/******************/
var refreshVarzesh3 = goog.dom.getElement("btnRefreshVarzesh3");
if (refreshVarzesh3 != null) {
goog.events.listen(refreshVarzesh3, goog.events.EventType.CLICK, function(event) {
/*doing something but not toggling accordion pane*/
});
}
Run Code Online (Sandbox Code Playgroud)
HTML代码:
<body>
<div class="main">
<div class="top">
<div id="toolbar">
<img src="css/img/contact.png" alt="????? ???????? ????? ???" title="????? ???????? ????? ???"/>
</div>
<img src="css/img/football_news.gif" alt="????? ????? ??????"/>
</div>
<div class="middle">
<div class="left"></div>
<div class="right">
<div class="accordion" id="accordionContainer">
<div class="newsColumnHeader">
<div class="buttons">
<img id="btnRefreshVarzesh3" src="css/img/refresh.png" alt="?? ??? ?????" title="?? ??? ?????"/>
</div>
<%=lbls.getString("Varzesh3News")%>
</div>
<div class="newsList" id="varzesh3NewsContainer"></div>
<div class="newsColumnHeader"><%=lbls.getString("PersepolisNews")%></div>
<div class="newsList" id="persepolisNewsContainer"></div>
<div class="newsColumnHeader"><%=lbls.getString("EsteghlalNews")%></div>
<div class="newsList" id="esteghlalNewsContainer"></div>
<div class="newsColumnHeader"><%=lbls.getString("NavadNews")%></div>
<div class="newsList" id="navadNewsContainer"></div>
</div>
</div>
</div>
<div class="bottom"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
对于纯JavaScript开发人员来说,答案就在这里,但如果您使用Google Closure Library,则以下代码就足够了:
event.stopPropagation();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2600 次 |
最近记录: |