用明确的事件和参数逐行做这件事是愚蠢的。您应该考虑对其进行一些重构。删除显式 ID,您应该设置一些基于类的处理程序,或者至少,定位父 id 并找到要作为子项附加的图像,如下所示:
<div id="example_6_frame">
<ul>
<li><a href="#"><img src="images/ex6_1t.jpg" alt="thumbnail 1" /></a></li>
<li><a href="#"><img src="images/ex6_2t.jpg" alt="thumbnail 2" /></a></li>
<li><a href="#"><img src="images/ex6_3t.jpg" alt="thumbnail 3" /></a></li>
<li><a href="#"><img src="images/ex6_4t.jpg" alt="thumbnail 4" /></a></li>
<li><a href="#"><img src="images/ex6_5t.jpg" alt="thumbnail 5" /></a></li>
<li><a href="#"><img src="images/ex6_6t.jpg" alt="thumbnail 6" /></a></li>
<li><a href="#"><img src="images/ex6_7t.jpg" alt="thumbnail 7" /></a></li>
</ul>
</div>
js位...
$("example_6_frame").getElements("img").each(function(el, i) {
el.addEvents({
click: function(e) {
ex6Carousel.goTo(i);
}
});
});
这里还有一个 mootools liveEvent 实现,http ://dev.k1der.net/dev/live-events-pour-moootools/ - 你可以很容易地适应上面...
Element.implement({
addLiveEvent: function(event, selector, fn){
this.addEvent(event, function(e){
var t = $(e.target);
if (!t.match(selector)) return false;
fn.apply(t, [e]);
}.bindWithEvent(this, selector, fn));
}
});
请记住,如果脚本使用 mootools scroll.js 来查找和滚动到元素,您可能不得不保留特定的 ID。话虽如此,这个 iCarousel 来自编写 iMask 的同一个人,所以它应该写得很好......