簡體   English   中英

如何模擬用戶單擊JQuery中的鏈接?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM