Ответ 1
Было бы проще сразу изменить местоположение:
e.preventDefault();
location.href = $(this).data('wpurl');
Я пытаюсь создать ссылку, которая при нажатии на нее переключает свой атрибут href, а затем переходит в это место.
Мой html:
<a href="#" onclick="location.href='http://google.com'; return false;" rel="group" data-wpurl="http://yahoo.com"></a>
При щелчке, я хотел бы, чтобы браузер перешел в местоположение data-wpurl, а не в href. Причина, по которой я использую атрибут data, заключается в том, что приложение, которое я использую, требует использования href... здесь не имеет значения.
Мой jQuery:
$('a[rel="group"]').on('click', function(e) {
e.preventDefault();
var wpurl = $(this).attr("data-wpurl");
$(this).attr('href', wpurl);
});
Я использую e.preventDefault(); чтобы браузер не брал пользователя в href. После того, как атрибут data присваивается href, как я могу вызвать щелчок? Использование trigger('click')
и click();
не работает!
Любые идеи?
Было бы проще сразу изменить местоположение:
e.preventDefault();
location.href = $(this).data('wpurl');
Аналогичное решение, но без необходимости вызова e.preventDefault()
$('a[rel="group"]').on('click', function(e) {
e.originalEvent.currentTarget.href = $(this).data('wpurl');
});
с моей точки зрения, это более общее, более чистое решение, так как это не изменит поведение браузера по умолчанию (например: когда пользователь нажимает колесико мыши по ссылке, с решением Jacks нет новой вкладки открыт)
Используйте onmousedown. Google использует этот метод на своей странице результатов поиска, чтобы отслеживать, что вы нажали. Если вы хотите увидеть, куда будет идти ссылка, щелкните правой кнопкой мыши вместо левой. Они оба запускают событие onmousedown.
<a href="http://google.com" data-wpurl="http://yahoo.com" onmousedown="rwt(this)">CLICK HERE</a>
<script type="text/javascript">
rwt = function(e){
e.href = $(e).data('wpurl');
}
</script>
Я думаю, что ваш оригинальный jQuery в порядке, за исключением e.preventDefault(): это остановит запуск события, независимо от того, что вы делаете с атрибутом href после этой точки.
$('a[rel="group"]').on('click', function(e) {
var wpurl = $(this).attr("data-wpurl");
$(this).attr('href', wpurl);
});
Все приведенные выше коды будут выполняться до обновления страницы.