Как вызвать клик по ссылке с помощью jQuery

У меня есть ссылка:

<ul id="titleee" class="gallery">
  <li>
    <a href="#inline" rel="prettyPhoto">Talent</a>
  </li>
</ul>

и я пытаюсь вызвать его, используя:

$(document).ready(function() {
  $('#titleee').find('a').trigger('click');
});

Но это не сработает.

Я также пробовал: $('#titleee a').trigger('click');

Edit

Мне действительно нужно вызвать все, что называется здесь <a href="#inline" rel="prettyPhoto">

Ответ 1

Если вы пытаетесь вызвать событие на якоре, тогда ваш код будет работать. Я воссоздал ваш пример в jsfiddle с помощью добавленный eventHandler, чтобы вы могли видеть, что он работает:

$(document).on("click", "a", function(){
    $(this).text("It works!");
});

$(document).ready(function(){
    $("a").trigger("click");
});

Вы пытаетесь заставить пользователя перейти к определенной точке веб-страницы, нажав на якорь, или пытаетесь инициировать связанные с ней события? Возможно, вы на самом деле не связали событие click с событием?

Также это:

$('#titleee').find('a').trigger('click');

является эквивалентом этого:

$('#titleee a').trigger('click');

Не нужно вызывать find.:)

Ответ 2

Извините, но обработчик событий действительно не нужен. Вам нужен еще один элемент в теге, который нужно нажать.

<a id="test1" href="javascript:alert('test1')">TEST1</a>
<a id="test2" href="javascript:alert('test2')"><span>TEST2</span></a>

Jquery:

$('#test1').trigger('click'); // Nothing
$('#test2').find('span').trigger('click'); // Works
$('#test2 span').trigger('click'); // Also Works

Это все о том, что вы нажимаете, и это не тег, а вещь внутри него. К сожалению, голый текст, похоже, не распознается JQuery, но это ванильный javascript:

document.getElementById('test1').click(); // Works!

Или путем доступа к объекту jQuery в виде массива

$('#test1')[0].click(); // Works too!!!

Ответ 3

Поскольку этот вопрос занял первое место в Google за "инициирование щелчка по элементу <a>", и ни один ответ на самом деле не упоминает, как вы это делаете, вот как вы это делаете:

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

Объяснение: вы запускаете click для базового html-элемента, а не для объекта jQuery.

Пожалуйста, гуглеры :)

Ответ 4

С кодом, который вы предоставили, вы не можете ожидать, что что-то произойдет. я second @mashappslabs: сначала добавьте обработчик событий:

$("selector").click(function() {
    console.log("element was clicked"); // or alert("click");
});

затем запустите свое событие:

$("selector").click(); //or
$("selector").trigger("click");

и вы должны увидеть сообщение в своей консоли.

Ответ 5

Если вы пытаетесь вызвать событие на якоре, тогда код, который у вас есть, будет работать.

$(document).ready(function() {
  $('a#titleee').trigger('click');
});

ИЛИ

$(document).ready(function() {
  $('#titleee li a[href="#inline"]').click();
});

ИЛИ

$(document).ready(function() {
  $('ul#titleee li a[href="#inline"]').click();
});

Ответ 6

Ну, вам нужно сначала настроить событие клика, затем вы можете запустить его и посмотреть, что произойдет:

//good habits first let cache our selector
var $myLink = $('#titleee').find('a');
$myLink.click(function (evt) {
  evt.preventDefault();
  alert($(this).attr('href'));
});

// now the manual trigger
$myLink.trigger('click');

Ответ 7

Это демонстрация того, как инициировать событие

<!DOCTYPE html>
    <html>
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script>
    $(document).ready(function(){
        $("input").select(function(){
            $("input").after(" Text marked!");
        });
        $("button").click(function(){
            $("input").trigger("select");
        });
    });
    </script>
    </head>
    <body>

    <input type="text" value="Hello World"><br><br>

    <button>Trigger the select event for the input field</button>

    </body>
    </html>

Ответ 8

Для ссылок это должно работать:

eval($(selector).attr('href'));

Ответ 9

Это точно не отвечает на ваш вопрос, но даст вам тот же результат с меньшей головной болью.

У меня всегда есть методы вызова событий click, которые содержат всю логику, которую я хотел бы выполнить. Чтобы я мог просто вызвать метод напрямую, если я хочу выполнить действие без фактического щелчка.

Ответ 10

Вы должны вызвать собственный метод element.click() или использовать API createEvent.

Для получения дополнительной информации посетите: https://learn.jquery.com/events/triggering-event-handlers/