2010-06-28 236 views
3

我以爲jQuery的click()可以讓我們添加一個處理程序或只需點擊一個元素?jQuery的click()沒有點擊?

不過,我想:

$(function() { 
    setTimeout(function() { 
     $('a').first().trigger('click'); // or click(), the same 
    }, 3000); 
}); 

,等待3秒鐘,也不會在頁面單擊第一個<a>元素......怎麼來的?

更新:這是關係到What is the best way to make the Yahoo media player autostart, jQuery?等應該已經有事件處理程序,點擊一個媒體,所以怎麼來.click(),這是一樣的trigger('click'),沒有發射過該事件處理程序?

回答

11

調用click()方法不會模擬點擊鏈接。它會調用受影響元素上的任何click()處理程序。這是一個微妙而重要的區別。如果你想模擬點擊鏈接,沒有可行的跨瀏覽器的方式來做到這一點。

+0

您可以在IE中點擊;-) [但不是FF ,不知道其他人。] – 2010-06-28 07:48:59

+0

你確定你可以在IE中「點擊」嗎?我試過IE 8,它不會跟隨鏈接。此外,請參閱http://stackoverflow.com/questions/3130937/jquerys-click-can-trigger-event-handlers-only-for-dom0-and-event-handlers-regi – 2010-06-28 08:46:47

1

我不確定,如果.first()是使用此功能的可能方法。你有沒有試過

$('a:first').click(); 

取而代之?如果.first()不存在,它會拋出一個錯誤,.click()永遠不會到達,因爲它生活在一個匿名函數中,你甚至可能根本沒有看到錯誤(失敗)。

+1

http://api.jquery.com /第一/ – 2010-06-28 07:19:18

+0

同意,它應該以原來的方式工作。我留下了答案,因爲該點保持對其他錯誤有效。 – Boldewyn 2010-06-28 07:35:17

-1

您正在嘗試使用click()方法進行其他目的。 click()用於所以你可以點擊一個特定的元素,而不是爲模擬它。

更多here

+1

不帶參數的點擊可以在大多數情況下模擬點擊。檢查您提供的同一網址上點擊列表中的最後一個arg選項。 – David 2010-10-25 03:24:13

0

如果你已經有一個事件處理程序的鏈接,你可以使用trigger()方法:

$('a:first').trigger('click'); 
1

這裏是你可以做模擬點擊一個鏈接是什麼(只要這些是正常的鏈接):

location.href = $('a').first().get(0).href; 
0

你究竟想要做什麼?鏈接通常用於重定向到新頁面。所以,如果你需要一個重定向,使用這樣的:

 $(function() { 
     setTimeout(function() { 
      window.location.replace("linkToNewPage.html"); 
     }, 3000); 

    }); 
0

「有這個PLZ在本頁面 http://mediaplayer.yahoo.com/api/#example_usage 檢查 如果u盤自動播放= true,則第一首歌 將一個選項。自動啓動..「

- Kai

有關:

What is the best way to make the Yahoo media player autostart, jQuery?


否則爲單擊附加一個單擊處理程序到你想要的東西如:

$('#MyElementID').click(function() { 
//How you want it to behave when you click it. 
}); 

window.setTimeout(YourFunction, 3000); 

function YourFunction { 
//Your function that runs. Maybe fire the onclick handler? 
} 

2

我最近遇到了類似的問題。沒有任何反應的原因是因爲錨標籤沒有「點擊」方法讓jquery調用。例如,如果將錨標記更改爲<button></button>標記,則.click()將模擬用戶按預期方式單擊。

這裏有一些「hacky」的解決方法,但它取決於如何設置錨標記的事件處理程序。例如,如果錨標記href屬性中有一些javascript,這將工作(這恰好是我的問題的解決方案):

var lnk = $('a.mylink'); 
window.location = lnk.attr('href');