有些人遇到了这个问题,但是我没有找到适合我的答案。
这是html:
<div id="page">
......
<ul>
<li role="presentation">
<a id="selection"...... ></a>
</li>
<li role="presentation>
<a id="xxxx"></a>
</li>
<li role="presentation">
<a id="yyyyy"></a>
</li>
</ul>
.......
</div>
这是使用Mootools的javascript(无选择):
window.addEvent('domready', function() {
var myDivPage = document.id('page');
var as = myDivPage.getElements('li[role=presentation] a');
//as is an array of 3 elements
Array.each(as, function(element, index) {
if(element.id !== 'selection') {
element.addEvent("click", function(event) {
event.preventDefault();
event.stopPropagation();
alert("did you save?");
});
}
});
});
该事件确实已附加,但是当我单击链接时,警报显示两次,就像该事件发生了两次一样。如您所见,我停止了传播,这怎么可能发生?
谢谢
答案 0 :(得分:0)
下面的if条件在循环内。
if(element.id !== 'selection')
对每个不等于element.id
的{{1}}进行检查。那么如果条件为真,那么多少次呢? 2一个用于selection
,另一个用于id="xxxx"
仅使用一次即可触发点击事件
id="yyyyy"
答案 1 :(得分:0)
显示的代码似乎正常。验证您的事件处理程序实际上没有添加两次(在Array.each循环之前放置警报)
$$('#page li[role=presentation] a:not(#selection)').addEvent("click",
function(event) { event.stop(); alert("Did you save?"); })
尽管如此,这将是一种更加实用的方式。