Jquery click не работает в гиперссылке

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

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

<a id="lnk_0" href="#" onclick="location.href='http://mydomain.com/mypage.html'; return false;">link</a>

Ответ 1

См. click():

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

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

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

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

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

Ответ 2

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

Вам нужно написать:

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

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


EDIT: в ответ на ваш комментарий вы можете вызвать метод DOM click, например:

if ($("#lnk_0")[0].click)
    $("#lnk_0")[0].click();
else
    window.location = $("#lnk_0").attr('href');

Ответ 3

Чтобы разрешить функциональность гиперссылки (наведение, курсор и т.д.) при переопределении с помощью 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>

Ответ 4

Делать это работает:

$('#lnk_0')[0].click();

Ответ 5

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

var target = "...";

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

target.trigger(e);

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