Как вызвать событие клика на элементе 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();