1
你可以測試我的代碼,當我點擊布頓,我們將得到第一個鏈接2鏈接Mootools - 爲什麼不跑?
點擊,不會提醒
點擊第二個鏈接,顯示警報
爲什麼第一個鏈接不警惕,如何可以提醒?
<html>
<head>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("mootools", "1.1.2");</script>
<script>
window.addEvent('domready', function(){
$('button').addEvent('click', function(){
$('content').innerHTML = $('test').innerHTML;
});
});
</script>
</head>
<body>
<input id="button" type="button" name="button" value="Click"/>
<div id="content">
</div>
<div id="test">
<script>
function test(){
$('a-content').addEvent('click', function(){
alert(1);
});
}
window.addEvent('domready', function(){
test();
});
</script>
<a id="a-content" href="#">CLICK HERE</a>
</div>
</body>
</html>
呃。這是錯誤的。事件不是基於id進行委派的。如果你有附加一個事件的'el id =「foo」',然後你通過innerHTML克隆這個元素,那麼你最終得到的是同一個id的ANOTHER元素,那麼附加的事件將不起作用。無論如何,擁有多個具有相同ID的元素是錯誤的。爲什麼不用''來代替?即使如此,除非您使用事件委派(http://mootools.net/docs/more/Element/Element.Delegation),否則克隆元素意味着您需要重新添加事件。另一件壞事 - 你克隆包含腳本標記的innerHTML ... – 2010-09-28 08:47:25
另外,如果你添加事件到一個id,然後通過父innerHTML重寫相同的id元素,舊的事件處理程序將停止工作,因爲mootools使用* *每個元素**事件系統。每個元素都被分配一個唯一的UID,事件將以UID作爲關鍵字進入Mootools存儲。使用相同的id =屬性移除並重新添加一個元素到DOM意味着它將得到一個新的UID,舊的回調將不再被引用。 – 2010-09-28 09:13:59
謝謝suggetsion,我會再試一次 – Chameron 2010-09-29 04:41:48