Как щелкнуть гиперссылку с помощью .click () в Jquery? - PullRequest
0 голосов
/ 25 июня 2018

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

( каков код для : Нажатие 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();
}
});

ПРИМЕЧАНИЕ: Я использую этот код как пользовательский скрипт в Tampermonkey (надеюсь, это поможет).

Ответы [ 4 ]

0 голосов
/ 25 июля 2018

Как сказал @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')
}
});

Когда вы нажимаете Введите Код ключа: 13 вы переходите на следующую страницу.

При нажатии Shift Код клавиши: 16 вы переходите на предыдущую страницу.

0 голосов
/ 25 июня 2018

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

$(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)
  })
})

Вот пример

0 голосов
/ 25 июня 2018

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

$('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')
    }
});
0 голосов
/ 25 июня 2018

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

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");
    }
});

EDIT

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

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

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

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

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