Mootools addEvent有多个id

时间:2011-10-10 18:12:47

标签: mootools

如何更多次使用此功能:

$('GotoHome').addEvent('click', function(event) {
    event = new Event(event).stop();
    scroll.toElement('middlerightwrapper');
});

如果我使用ID="GotoHome"创建多个链接,则它不再有效,只有一个ID。 我不想复制像GotoHome1,GotoHome2,GotoHome3

2 个答案:

答案 0 :(得分:3)

我建议在您的元素中添加一个公共类,并使用dollars function添加点击处理程序:

<强> HTML

<a href="" class="common-class" id="GotoHome1">Goto Home 1</a>
<a href="" class="common-class" id="GotoHome2">Goto Home 2</a>
<a href="" class="common-class" id="GotoHome3">Goto Home 3</a>

<强> Mootools的

$$('.common-class').addEvent('click', function(event) { 
    event = new Event(event).stop(); 
    scroll.toElement('middlerightwrapper'); 
});

dollar函数返回与选择器匹配的所有元素的数组。

答案 1 :(得分:1)

你不能只有一个带有in的元素(例如:id必须在你的页面上是唯一的),它不是mootools问题或要求,它是一个html(虽然浏览器原谅了很多松散的程序)

你应该依赖id以外的类

$$('.GotoHome').addEvent('click', function(event) { 
     event = new Event(event).stop(); scroll.toElement('middlerightwrapper'); }
);

或者,如果你有一个封闭容器,你可以使用事件委托来拥有一个入口点而不是多个addEvent函数:

 $('container-id').addEvent("click:relay(.GotoHome)", function(event) { 
     event = new Event(event).stop(); scroll.toElement('middlerightwrapper'); }
);

我不在我的开发工作站上,无法检查事件管理器中的中继语法,值得检查

修改

Hint on delegating events from mootools official site