Как вызвать щелчок по ссылке с помощью 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:

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

9 171

9 ответов:

Если вы пытаетесь вызвать событие на якоре, то код у вас будет работать я воссоздал ваш пример в 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');

нет необходимости звонить найти. :)

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

<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!!!

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

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

затем вызвать ваше событие :

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

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

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

$(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();
});

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

//good habits first let's 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');

Это демо, как вызвать событие

<!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>

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

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

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

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

вы должны вызвать родной элемент .щелкните метод () или используйте API createEvent.

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