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');