2010-07-15 42 views
1

如何模擬原型中錨點(<a>)標籤的點擊?原型 - 模擬點擊<a>標籤

例如我期望下面的代碼工作在點擊第二個鏈接(「點擊我」)將導致alert('here');被執行。

<a id="myLink" href="" onclick="alert('here'); return false;">don't click me</a> 
<br /> 
<a href="" onclick="$('myLink').click(); return false;">click me</a> 

thanks,p。

回答

3

您可以從Protolicious庫使用simulate()方法:

您可以看到測試沙箱here,但隨着事件的補充道:

<a id="myLink" href="#">don't click me</a> 
<br /> 
<a id="clicked" href="#">click me</a> 

<script type="text/javascript"> 
Event.observe($('myLink'), 'click', function() { alert ('aaa'); return false; }); 
Event.observe($('clicked'), 'click', function() { alert ('bbb'); $('myLink').simulate('click'); return false; }); 
</script> 
+0

你試過運行代碼嗎?因爲我認爲問題可能是$('myLink')沒有返回HTMLElement對象。它不適合我... – pstanton 2010-07-15 07:08:06

+0

用示例頁面查看修訂後的答案:) – 2010-07-15 07:47:29

+0

啊我看到..我需要protolicious ...但肯定有原型沒有第三方庫的方式?感謝信息..至少我知道有一種方式。如果其他人有原型只回答,會稍微保持一點。 – pstanton 2010-07-15 09:04:54

0

我沒有測試過,但試試這個:

<a id="myLink" href="" onclick="alert('here'); return false;">don't click me</a> 
<br /> 
<a href="" onclick="Event.fire($('myLink'), 'click');">click me</a> 
+0

這不起作用。 – pstanton 2010-07-17 21:40:20

+0

糟糕,我忘了原型事件僅限於自定義事件。我可以問爲什麼你不能模擬點擊事件?有機會有更好的方法來處理它。 – ashicus 2010-07-18 03:01:02

+0

,因爲這個其他鏈接有一堆由第三方程序註冊的事件監聽器。將其他鏈接用作各種註冊表而不是將實際獲得點擊的鏈接上的所有事件處理程序放在一起會更容易。 – pstanton 2010-07-19 04:24:29