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

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

25 голосов
/ 05 декабря 2008

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

Ответы [ 8 ]

35 голосов
/ 05 декабря 2008

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

$("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();

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

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

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

EDIT
Если вы действительно хотите сделать это 1337-haxxor

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

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

EDIT

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

document.location = $("table").eq(0).children("tr").eq(0).children('td').eq(0).children('a').eq(0).attr('href');
8 голосов
/ 05 декабря 2008

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

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

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

4 голосов
/ 05 ноября 2009

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

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

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

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

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

4 голосов
/ 05 декабря 2008

$ (- некоторый объект -). Триггер ('щелчок') должен сделать свое дело.

3 голосов
/ 28 апреля 2010

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

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

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

2 голосов
/ 14 января 2009
$("table:first").find("tr:first").find("td:first").find("a:first")[0].click();

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

0 голосов
/ 27 июля 2011

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

  $(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>
0 голосов
/ 08 декабря 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...