Как вызвать щелчок по ссылке с помощью 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 ответов:
Если вы пытаетесь вызвать событие на якоре, то код у вас будет работать я воссоздал ваш пример в 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>
Это точно не ответ на ваш вопрос, но даст вам тот же результат с меньшей головной болью.
У меня всегда есть мои методы вызова событий click, которые содержат всю логику, которую я хотел бы выполнить. Так что я могу просто вызвать метод напрямую, если я хочу выполнить действие без фактического щелчка.
вы должны вызвать родной элемент .щелкните метод () или используйте API createEvent.
для получения дополнительной информации, пожалуйста, посетите: https://learn.jquery.com/events/triggering-event-handlers/