![](/img/trans.png)
[英]How do I simulate clicking a link that opens in a new tab/window using jQuery/Javascript?
[英]How do I simulate user clicking a link in JQuery?
現在這里有很多類似的問題,但是我想知道,如果我不想改變窗口的location
,而是觸發可能綁定到click
事件的任何函數,並且僅更改,該怎么辦?如果他們同意,則href
如果沒有監聽器,則重定向。
例如:
var a = $('.edithost');
a.click(function() {return false;});
如果我用鼠標單擊鏈接,它將永遠不會帶我到href,因此僅將用戶重定向到attr('href')
就會改變頁面的預期行為。 此外,單擊不僅適用於鏈接,而且也適用於按鈕,在這種情況下,我將必須提交表單等。
所以我想知道,是否可以模擬單擊元素,以便瀏覽器的所有行為完全相同,就像用鼠標單擊一樣?
鏈接不能包含任何偵聽器。
例:
var a = $('<a href="google.com">google</a>');
a.click();
a.trigger('click');
這不會帶您去Google,我想做到。
更新: .click()
將不起作用。 trigger('click')
。 preventDefault
與此無關
在IE中,您可以在元素上調用.click()
,但是對於標准瀏覽器,您需要通過創建本機鼠標事件來模擬click事件,然后使用dispatchEvent
來觸發它。
我在這個jQuery'plugin'中總結了所有內容:
$.fn.simulateClick = function() {
return this.each(function() {
if('createEvent' in document) {
var doc = this.ownerDocument,
evt = doc.createEvent('MouseEvents');
evt.initMouseEvent('click', true, true, doc.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
this.dispatchEvent(evt);
} else {
this.click(); // IE
}
});
}
現在,只需致電:
$('.edithost').simulateClick();
試試a[0].click();
這將執行DOM元素的click
方法,而不是觸發事件。
是的,非常簡單:
$('#YourSelector').click();
這將模擬用戶點擊。
我真的不明白你想做什么。 有了這個 :
a.click(function(e){
e.preventDefault();
});
您可以停止事件的默認行為(在這種情況下,重定向到a.attr('href'))。 然后,您可以執行所需的任何任務,然后手動重定向用戶。
這是您要找的東西嗎?
如果您想觸發click事件,只需執行
a.click();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.