Как вызвать событие клика на элементе href
Я пытаюсь вызвать событие нажатия на гиперссылку с помощью jQuery, как показано ниже. У гиперссылки нет идентификатора, но есть класс CSS
$(document).ready(function () { $('.cssbuttongo').trigger('click'); });
Функция выше не работает. Это гиперссылка
<a href="hyperlinkurl" class="cssbuttongo">hyperlink anchor</a>
Ответы
Ответ 1
У меня нет фактических доказательств, подтверждающих это, но я уже столкнулся с этой проблемой. Похоже, что запуск события click() в теге <a>
, похоже, не ведет себя так же, как вы ожидали бы с помощью кнопки ввода.
Обходной путь, который я использовал, - установить свойство location.href в окне, которое заставляет браузер загружать ресурс запроса следующим образом:
$(document).ready(function()
{
var href = $('.cssbuttongo').attr('href');
window.location.href = href; //causes the browser to refresh and load the requested url
});
});
Edit:
Я бы сделал js скрипку, но характер вопроса, смешанный с тем, как jsfiddle использует iframe для рендеринга кода, делает это нехорошим.
Ответ 2
Собственный метод DOM делает правильную вещь:
$('.cssbuttongo')[0].click();
^
Important!
Это работает независимо от того, является ли href
URL, фрагмент (например, #blah
) или даже javascript:
.
Обратите внимание, что это вызывает метод DOM click
вместо метода jQuery click
(который является очень неполным и полностью игнорирует href
).
Ответ 3
В дополнение к romkyns отличный ответ.. вот некоторые соответствующие документы/примеры.
Элементы DOM имеют собственный метод .click()
.
Метод HTMLElement.click()
имитирует щелчок мышью по элементу.
Когда используется клик, он также запускает событие щелчка элемента, которое будет пузыриться до элементов выше дерева документа (или цепочки событий) и запускать их события кликов. Однако, пузырение события click не приведет к тому, что элемент <a>
начнет навигацию, как если бы был получен реальный щелчок мыши. (ссылка mdn)
Релевантно Документация W3.
Несколько примеров.
-
Вы можете получить доступ к определенному элементу DOM из объекта jQuery: (пример)
$('a')[0].click();
-
Вы можете использовать метод .get()
для извлечения элемента DOM из объекта jQuery: (пример)
$('a').get(0).click();
-
Как и ожидалось, вы можете выбрать элемент DOM и вызвать метод .click()
. (пример)
document.querySelector('a').click();
Стоит отметить, что jQuery не требуется для запуска встроенного события .click()
.
Ответ 4
Запуск клика по JavaScript не откроет гиперссылку. Это мера безопасности, встроенная в браузер.
См. этот вопрос для некоторых обходных путей.
Ответ 5
Просто хочу, чтобы вы, ребята, знали, принятый ответ не всегда работает.
В этом примере это не сработает.
если <href='/list'>
href = $('css_selector').attr('href')
"/list"
href = document.querySelector('css_selector').href
"http://localhost/list"
или вы можете добавить href, который вы получили от jQuery, к этому
href = document.URL +$('css_selector').attr('href');
или jQuery
href = $('css_selector').prop('href')
Наконец, вызовите его, чтобы изменить URL текущей страницы браузера
window.location.href = href
или вытащите его, используя window.open(url)
Здесь пример в JSFiddle.
Ответ 6
Я столкнулся с аналогичной проблемой, как нажать кнопку, а не ссылку. Это не удалось в методах .trigger('click') или [0].click(), и я не знал почему. Наконец, для меня работало следующее:
$('#elementid').mousedown();