jquery click не работает по гиперссылке - PullRequest
14 голосов
/ 13 января 2010

У меня есть простая симуляция щелчка по ссылке, которую я хочу сделать с помощью jQuery. Из того, что я прочитал, это должно работать, но код ниже не работает. Ничего не произойдет, если я сделаю то же самое в рамках какого-то другого события или чего-то еще. Мысли

<script type="text/javascript">
  $(function() {
    $("#lnk_0").click();
  });
</script>

<a id="lnk_0" href="http://mydomain.com/mypage.html">link</a>

Ответы [ 4 ]

24 голосов
/ 13 января 2010

См. click():

Запускает событие нажатия каждого согласованный элемент.

Вызывает все функции, которые имеют были связаны с этим событием клика, чтобы быть казнены.

Важно отметить, что не дублирует нажатие на ссылку. Это только вызывает связанные события. Если вы хотите изменить местоположение:

var link = $("#link_0");
link.click();
window.location.href = link.attr("href");

но даже это только приблизительное значение, поскольку оно не учитывает обработчики, останавливающие распространение событий.

8 голосов
/ 13 января 2010

Вызов метода jQuery click вызовет любые обработчики click, которые вы добавили, но не нажмет на ссылку.

Вам необходимо написать:

window.location = $("#lnk_0").attr('href');

(Предполагается, что click обработчиков событий нет)


РЕДАКТИРОВАТЬ: В ответ на ваш комментарий, вы можете вызвать метод DOM click только для IE, например:

if ($("#lnk_0")[0].click)
    $("#lnk_0")[0].click();
else
    window.location = $("#lnk_0").attr('href');
4 голосов
/ 21 октября 2012

Чтобы разрешить функциональность гиперссылки (наведение курсора, курсор в виде руки и т. Д.) При переопределении с помощью jQuery, вы можете сделать следующее:

<script>
    $(function() {
        $( "#dialog-modal" ).dialog({
            autoOpen: false,
            height: 320,
            modal: true
        });

        $( "#open-modal" ).click(function() {
            $( "#dialog-modal" ).dialog( "open" );
        });         
</script>
<a href="javascript:return true" id="open-modal">Open Modal</a>

<div id="dialog-modal" title="Hello World">
Hello
</div>
0 голосов
/ 20 сентября 2012

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

var target = "...";

var e = jQuery.Event("click");

target.trigger(e);

if (!e.isDefaultPrevented() && target.attr("href"))
    window.location.href = target.attr('href');
...