我在这里有关于javascript事件的问题。我有一个<a>
标签,如下所示:
<a id='aTag' href='http://mylink.com'>Click to redirect</a>
然后我将事件称为:
<script>
$('#aTag').click();
//or
$('#aTag').trigger('click');
</script>
它不会将我重定向到&#39; http://mylink.com&#39;。我尝试在onClick()
标记中添加<a>
事件,如下所示:
<a id='aTag' href='http://mylink.com' onclick='alert("Event happened");'>Click to redirect</a>
然后调用.click()
事件。它显示了alert("Event happened")
;
有人可以告诉我如何正确调用.click()
事件,或更正此href
标记中<a>
问题的重定向吗?
在我的商家中,我只需要一个<a>
代码,而不是window.open
或windown.location
。
答案 0 :(得分:3)
重定向只有在用户点击链接上的 时才会发生。程序化或延迟click
触发器不起作用。
另一种选择是:
window.location
window.location
window.location="http://wherever.you/want/to/g0";
或
window.location=$('a.selector').attr('href'); // to use a link's address
您无法以编程方式(click()
或trigger
)打开新标签/窗口或重定向。他们得到(ad-)阻止。自动
因此,用户操作始终必须触发新的标签/窗口开口。 (否则我们总是充满弹出广告)
首先,确保您的js是在用户事件上执行的,然后您应该可以使用window.open
。
<a href="//google.com" target="blank">new tab google</a>
<button class="user">user triggered</button>
<button class="programatic">programatic</button>
$('a').on('click', function(e) {
console.log('clicked', e);
// unfortunately although we simulated
// the click on the <a/> , it will still
// not launch a new window - idk why.
// therefore we can use the line below
// to open the <a>'s href in a new tab/window
// NOTE: this will only occur if the execution was
// triggered by the user
window.open(e.currentTarget.href);
});
var simulateClick = function(origEv) {
var e = $.Event("click");
e.ctrlKey = true;
e.metaKey = true;
e.originalEvent = origEv;
$('a').trigger(e);
};
$('button.user').on('click', function(e) {
// this call will actually open a window
simulateClick(e);
});
$('button.programatic').on('click', function(e) {
// this will result in a blocked popup
$.get('/someurl').always(function() {
// executes the method after a non-user event
// results in blocked popup
simulateClick(e);
});
});
// this will result in a blocked popup
setTimeout(simulateClick, 1000);
答案 1 :(得分:1)
试试这个 -
<a id="aTag" href="http://mylink.com" onclick="return doWork();">Click to redirect</a>
<script>
function doWork(){
//... do your works
return true; // then return true to redirect
}
</script>
这是小提琴 - http://jsfiddle.net/gcJ73/
(虽然小提琴属性有点不同,以告诉你它有效)
或使用jQuery:
//first assign the click handler
$('#aTag').click(function(){
//... do your work
return true;
});
//then call programmatically
$("#aTag").click(); or $("#aTag").trigger("click");
BTW以编程方式调用它不会重定向。只调用事件处理程序,而不是重定向。
jQuery小提琴 - http://jsfiddle.net/gcJ73/3/
答案 2 :(得分:0)
尝试:
<script>
jQuery('#aTag').click(function() {
// Your Code
});
</script>
答案 3 :(得分:0)
jQuery(&#39;#aTag&#39;)。click()不执行锚标记的href
属性,因此您不会被重定向,执行:
$(document).ready(function() {
jQuery('#aTag').click( function (e) {
window.location.href = this.href;
});
});
答案 4 :(得分:0)
<a id='aTag' href='http://mylink.com' onclick="location.href='http://mylink.com';">
Click to redirect
</a>
检查此代码段,它也会像您想要的那样工作。