Есть ли метод jQuery Click?

Я пытаюсь перейти по ссылке с помощью jquery. Кажется, что есть событие щелчка, которое воспроизводит «onclick» (то есть ввод пользователя). Можно ли использовать jquery, чтобы щелкнуть ссылку?

Вы имеете в виду программную эмуляцию щелчка по ссылке?

kgiannakakis 05.12.2008 16:25
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
25
1
52 149
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

$ (- некоторый объект -). trigger ('click') должен помочь.

Работает, но вы можете просто сделать $ (object) .click ()

TM. 08.12.2008 19:49

Я предпочитаю $ (- какой-то объект -). click () для удобочитаемости

Если передать методу click () функцию, она будет вести себя как привязка события onClick:

т.е. $ (- какой-то объект -). click (function () {-do stuff-})

Ответ принят как подходящий

Из вашего ответа:

$("a[0]") 

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

$("a:first") 

или же

$("a").eq(0). 

Итак, для селектора в вашем ответе:

$("table[1]/tr[1]/td[1]/a").trigger('click'); 

написать

$("table").eq(1).children("tr").eq(1).children('td').eq(1).children('a').click();

Обратите внимание, как это приведет к щелчку по всем ссылкам во второй ячейке таблицы второй строки таблицы во второй таблице на вашей странице. Если вы используете этот метод для перенаправления страницы на href объекта, следующий метод будет немного лучше:

document.location = $("table").eq(1).children("tr").eq(1).children('td').eq(1).children('a').attr('href');

Обратите внимание, как это установит местоположение документа на href первого a, найденного во второй ячейке таблицы второй строки таблицы, найденной во второй таблице на странице. Если вы хотите сопоставить первые элементы, используйте eq (0) вместо eq (1).

РЕДАКТИРОВАТЬ
Если вы действительно хотите сделать это 1337-haxxor

$("table:eq(1) > tr:eq(1) > td:eq(1) > a").click();

однако я думаю, что другой метод более читабелен.

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

Хорошо, от вас следующий ответ / вопрос thingie
Как насчет того, чтобы не нажимать на ссылку, а просто установить для нее строку document.location:

document.location = $("table").eq(0).children("tr").eq(0).children('td').eq(0).children('a').eq(0).attr('href');

Спасибо, Пим. Я пытался воспроизвести поведение пользователя, но это хороший обходной путь. Большое спасибо.

jedd 08.12.2008 20:34

Если вы собираетесь использовать этот ответ, вы должны принять его.

Pim Jager 08.12.2008 20:41

Он также не заполняет HTTP-реферер.

Chase Seibert 09.04.2010 19:31

Попробуйте так:

$("table:first").find("tr:first").find("td:first").find("a:first").click();

Это вызовет событие onclick первого элемента a в первой ячейке первой строки в первой таблице ... и оно само по себе очень читабельно.

Я не хочу запускать событие onclick !!!!! Хочу программно щелкнуть по объекту !!! Эквивалент Javascript: window.document.getElementsByTagName ("таблица") [0] .rows [0] .cel‌ ls [1] .children [0] .cl‌ ick ();

jedd 08.12.2008 20:02

"программно щелкнуть объект", что это значит, если не вызвать событие onclick для извлеченного элемента? вы хотите назначить функцию onclick, или?

Andreas Grech 08.12.2008 23:37
$("table:first").find("tr:first").find("td:first").find("a:first")[0].click();

Это будет работать в Internet Explorer, если это ваша единственная цель, иначе вы застрянете с решением document.location.

Это успешно работает:

    $(document).ready(function() {
        $("#horizontalSlideButton").trigger('click');
    }); 

Где horizontalSlideButton - это идентификатор ссылки, для которой нужно инициировать событие щелчка.

Как только DOM загружается, загружается содержимое $ (document) .ready (function () {}.

Пожалуйста, отметьте, если это поможет!

У меня была аналогичная проблема, и я обнаружил, что, создав поддельный объект события, а затем отправив его с помощью dispatchEvent (), очень красиво реплицировал щелчок пользователя:

var event = document.createEvent("HTMLEvents");
event.initEvent("click", true, true);
document.getElementById('myID').dispatchEvent(event); 

Очевидно, что здесь не используется JQuery, но это может помочь в вашей задаче.

Я предпочитаю использовать живую функцию, например (для класса)

  $(document).ready(function() {
    $(".myclass").live('click', function(){//do something});

});

или для идентификатора

 $(document).ready(function() {
    $("#myid").live('click', function(){//do something});

});

Я использую класс span, чтобы стилизовать свою ссылку и присвоить ей класс или идентификатор, например

    <span class = "link"><a href = "javascript:void(0);" target = "_new">my link/a></span>

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