Как щелкнуть гиперссылку с помощью .click () в JQuery?

Я пытаюсь прочитать статью, но мне надоело нажимать гиперссылку «следующая страница», и я попытался запустить приведенный ниже код.

(какой код для: Нажатие Enter найдет гиперссылку класса «x-hidden-focus») и щелкните по ней.

Приведенный ниже код работал, нажимая кнопку при нажатии EnterKey для другой веб-страницы, но он не работал с гиперссылкой. Я попытался запустить код, который прокомментирован, но ни один из кодов не устранил мою проблему.

Класс гиперссылки, которую я хочу нажать, - ".x-hidden-focus".

Это ссылка на статью.

$(document).keypress(function(event){
var which = (event.which ? event.which : event.keyCode);
if (which == '13'){
    //$(".x-hidden-focus")[0].click();
    $(".x-hidden-focus").click();
}
});

NOTE: I am using this code as a userscript in tampermonkey (Hope this helps).

Можете ли вы прояснить свой вопрос следующим образом. Вы предоставили JS, но не предоставили HTML. Итак, что происходит в HTML. Ваш jQuery запрашивает селектор класса и, таким образом, может быть массивом элементов. Это может быть или не быть проблемой, но пока вы не предоставите HTML-код, я не могу точно сказать, есть ли причина, по которой вы не дали URL-адресам идентификатор, чтобы сделать его конкретным

DataCure 25.06.2018 15:12

Я тоже пробовал этот код, но он не работал. Я хочу быть более образованным (выбирает ли [0] первый элемент в списке массивов класса ".x-hidden-focus")?

Youssof H. 25.06.2018 15:13

Если мне не изменяет память, я почти уверен, что CLICK предназначен для форм, то есть кнопок. Проверьте сообщение, предоставленное @Alex ниже, поскольку я считаю, что установка местоположения браузера по URL-адресу (HREF) будет одинаково работать

DataCure 25.06.2018 15:15
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
225
4

Ответы 4

Вы можете попробовать просто перейти к href, описанному ссылкой, которую вы пытаетесь щелкнуть:

document.location = $("a.x-hidden-focus").attr("href")

Что с вашим кодом станет:

$(document).keypress(function(event){
    var which = (event.which ? event.which : event.keyCode);
    if (which == '13'){
        document.location = $("a.x-hidden-focus").attr("href");
    }
});

На основе предоставленной вами статьи мы видим, что HTML-код кнопки, которую вы пытаетесь нажать, имеет следующий вид:

<a href = "adding-a-controller" data-linktype = "relative-path" class = "x-hidden-focus">Next</a>

Однако, если вы нажмете «Далее», мы увидим, что теперь есть 2 кнопки:

<a href = "getting-started" data-linktype = "relative-path" class = "x-hidden-focus">Previous</a>
<a href = "adding-a-view" data-linktype = "relative-path" class = "x-hidden-focus">Next</a></p>

И теперь ваш код будет:

$(document).keypress(function(event){
    var which = (event.which ? event.which : event.keyCode);
    if (which == '13'){
        document.location = $("a.x-hidden-focus:contains('Next')").attr("href");
    }
});

РЕДАКТИРОВАТЬ

Мои предположения о том, что класс уже присутствует в элементе, были ошибочными.

Поскольку класс добавляется только после того, как вы наводите ссылку, вам нужно будет найти ссылку только по тексту:

$("a:contains('Next')");

Однако вы могли бы быть более точными, используя класс контейнера:

$("div.step-by-step").find("a:contains('Next')").attr("href")

Проголосуйте, поскольку это, похоже, сработает, вопрос в том, что мобильный телефон удобен, поскольку я уверен, что мобильные браузеры не любят перенаправление javascript из-за платы за мобильные данные.

DataCure 25.06.2018 15:13

@DataCure Он срабатывает при нажатии клавиши ввода, что, на мой взгляд, не имеет отношения к мобильным устройствам.

Quangdao Nguyen 25.06.2018 15:17

Вы можете улучшить селектор, чтобы получить только правильную кнопку, в этом случае это будет $('.x-hidden-focus:contains("Next")'), ваш код теперь ведет на неправильную страницу

baao 25.06.2018 15:18

Этот код просто создан для меня. Кстати, этот код привел меня к ссылке 404 Ссылка закончилась на (/ undefined) docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started‌ /…

Youssof H. 25.06.2018 15:19

«Следующий» якорь не имеет никакого класса в начале, описанный класс добавляется после наведения курсора.

im_tsm 25.06.2018 15:27

Просто нужно добавить слушателя для события щелчка, например:

$(document).on('keypress', function(e) {
  if (e.keyCode === 13) {
  $('.x-link').click(); 
}
 $('.x-link').on('click', function() {
    let url = $(this).attr('href')
    window.open(url)
  })
})

Вот пример

Кнопка на странице документации создается динамически, и класс не существует на ней, пока вы не нажмете / не наведете на нее курсор. Вам нужно будет выбрать кнопку с помощью

$('a:contains("Next")')

затем возьмите первую из трех полученных ссылок и возьмите ее href

$('a:contains("Next")').eq(0).attr('href') 

Теперь вы можете установить местоположение

document.location = $('a:contains("Next")').eq(0).attr('href')

$(document).keypress(function(event){
    var which = (event.which ? event.which : event.keyCode);
    if (which == '13'){
        document.location = $('a:contains("Next")').eq(0).attr('href')
    }
});

Это сработало для меня. Спасибо. Думаю, я могу сделать то же самое и для предыдущей ссылки?

Youssof H. 25.06.2018 15:35

Да. Просто выберите "Назад" вместо "Далее", затем

baao 25.06.2018 15:36

Я сделал то же самое для предыдущей ссылки, она сработала. Просто через несколько дней что-то пошло не так, и ни одно событие не зафиксировано, кроме 13 (введите Key).

Youssof H. 05.07.2018 13:31

Мне было интересно, какие ключевые события можно распознать, кроме (enterKey) = 13?

Youssof H. 05.07.2018 13:32

Я использовал этот сайт для извлечения кодов клавиш каждой кнопки, но ни одна из них не работает, кроме enterKey = 13.

Youssof H. 05.07.2018 13:34

Как сказал @bambam, вы должны сначала выбрать ссылку:

   `$('a:contains("Next")')`

Затем перейдите к href, описанному ссылкой:

    $('a:contains("Next")').eq(0).attr('href')

И вы можете сделать то же самое для предыдущей ссылки. Ваш окончательный код будет:

$(document).keydown(function(event){
var which = (event.which ? event.which : event.keyCode);
if (which == '13'){
    document.location = $('a:contains("Next")').eq(0).attr('href')
}
else if (which == '16'){
    document.location = $('a:contains("Previous")').eq(0).attr('href')
}
});

When you press EnterKeycode:13 you go to the next page.

When you press ShiftKeycode: 16 you go to the previous page.

Я думаю, что ваш код лучше всего работает там, где в моем случае лучше работает .keydown, а не .keypress.

Youssof H. 25.07.2018 09:44

Другие вопросы по теме