Как я могу имитировать щелчок якоря через JQuery? - PullRequest
143 голосов
/ 21 апреля 2009

У меня проблема с фальсификацией щелчка якоря через jQuery: Почему толстый ящик появляется при первом нажатии кнопки ввода, а не во второй или третий раз?

Вот мой код:

<input onclick="$('#thickboxId').click();" type="button" value="Click me" />

<a id="thickboxId" href="myScript.php" class="thickbox" title="">Link</a>

Это всегда работает, когда я нажимаю непосредственно на ссылку, но не, если я пытаюсь активировать Thickbox через кнопку ввода. Это в ФФ. Для Chrome это работает каждый раз. Есть намеки?

Ответы [ 17 ]

2 голосов
/ 12 марта 2010

Вы можете создать форму через jQuery или в коде HTML-страницы с действием, которое имитирует вашу ссылку href:

<a id="anchor_link" href="somepath.php">click here</a>.

var link = $('#anchor_link').attr('href');
$('body').append('<form id="new_form" action="'+link+'"></form>');
$('#new_form').submit();
2 голосов
/ 20 августа 2010

Чтобы имитировать щелчок на привязке при посадке на страницу, я просто использовал jQuery для анимации свойства scrollTop в $(document).ready. Нет необходимости в сложном триггере, и это работает в IE 6 и любом другом браузере.

2 голосов
/ 06 февраля 2013

В Javascript вы можете сделать это

function submitRequest(buttonId) {
    if (document.getElementById(buttonId) == null
            || document.getElementById(buttonId) == undefined) {
        return;
    }
    if (document.getElementById(buttonId).dispatchEvent) {
        var e = document.createEvent("MouseEvents");
        e.initEvent("click", true, true);
        document.getElementById(buttonId).dispatchEvent(e);
    } else {
        document.getElementById(buttonId).click();
    }
}

и вы можете использовать его как

submitRequest("target-element-id");
1 голос
/ 17 февраля 2015

Это не работает в родном браузере Android для нажатия «скрытого элемента ввода (файла)»:

$('a#swaswararedirectlink')[0].click();

Но это работает:

$("#input-file").show();
$("#input-file")[0].click();
$("#input-file").hide();
1 голос
/ 08 марта 2010

Используя скрипт Jure, я сделал это, чтобы легко «кликнуть» столько элементов, сколько вы хотите.
Я просто использовал Google Reader для 1600+ элементов, и он работал отлично (в Firefox)!

var e = document.createEvent('MouseEvents');
e.initEvent( 'click', true, true );
$(selector).each(function(){this.dispatchEvent(e);});
1 голос
/ 29 июля 2010

JQuery('#left').triggerHandler('click'); отлично работает в Firefox и IE7. Я не тестировал его в других браузерах.

Если вы хотите активировать автоматические клики, сделайте следующее:

window.setInterval(function() 
    {
        $('#left').triggerHandler('click');
    }, 1000);
0 голосов
/ 20 апреля 2015

Пытаясь смоделировать «щелчок» в модульных тестах с помощью спиннера jQuery UI, я не смог заставить работать ни один из предыдущих ответов. В частности, я пытался смоделировать «вращение» выбора стрелки вниз. Я посмотрел на блочные тесты пользовательского интерфейса jQuery UI , и они использовали следующий метод, который работал для меня:

element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup();
...