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