Щелчок jQuery () не щелкает? - PullRequest
3 голосов
/ 28 июня 2010

Я думал, что jQuery click() может позволить нам добавить обработчик или просто щелкнуть элемент?

Однако я попробовал:

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

и подождал 3 секунды, и он выиграл 't щелкните по первому <a> элементу на странице ... как получилось?

Обновление: это относится к Какой лучший способ сделать медиаплеер Yahooautostart, jQuery? и поэтому уже должен быть обработчик событий для нажатия на носитель, так почему же .click(), который совпадает с trigger('click'), не запускает этот обработчик событий?

Ответы [ 8 ]

11 голосов
/ 28 июня 2010

Вызов метода click() не симулирует нажатие на ссылку.Он вызывает любые обработчики click() для затронутых элементов.Это тонкое, но важное отличие.Если вы хотите смоделировать нажатие на ссылку, для этого не существует надежного кросс-браузерного способа.

2 голосов
/ 28 июня 2010

Я совсем недавно столкнулся с подобной проблемой. Причина, по которой ничего не происходит, заключается в том, что теги привязки не имеют метода click для вызова jquery. Если вы измените тег привязки на тег <button></button>, например, .click () будет имитировать щелчок пользователя, как ожидалось.

Есть несколько «хакерских» обходных путей для этого, но это будет зависеть от того, как настроен обработчик события для тега привязки. Например, если внутри атрибута href тега привязки был какой-то javascript, это сработало бы (что оказалось решением моей проблемы):

var lnk = $('a.mylink');
window.location = lnk.attr('href');
1 голос
/ 28 июня 2010

Вот что вы можете сделать, чтобы смоделировать щелчок по ссылке (если это обычные ссылки):

location.href = $('a').first().get(0).href;
1 голос
/ 28 июня 2010

Я не уверен, если .first() является возможным способом использования этой функции.Вы пробовали

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

вместо этого?Если .first() не существует, выдается ошибка, .click() никогда не достигается, и, поскольку он находится в анонимной функции, вы даже можете вообще не увидеть ошибку (с ошибкой).

0 голосов
/ 28 июня 2010

"Для этого есть опция. Проверьте PLZ на этой странице http://mediaplayer.yahoo.com/api/#example_usage Если вы установили autoplay = true, первая песня будет запущена автоматически .."

- Кай

По отношению к:

Каков наилучший способ автоматического запуска медиаплеера Yahoo,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?
}

?

0 голосов
/ 28 июня 2010

Что именно вы хотите сделать? Ссылка обычно используется для перенаправления на новую страницу. Так что если вам нужно перенаправление, используйте что-то вроде этого:

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

    });
0 голосов
/ 28 июня 2010

Если у вас уже есть обработчик событий для ссылки, вы можете использовать метод trigger():

$('a:first').trigger('click');
0 голосов
/ 28 июня 2010

Вы пытаетесь использовать метод click() для чего-то другого, кроме его цели. click() используется, чтобы вы могли поймать щелчок по определенному элементу, а не для имитации it.

Подробнее здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...