我有以下html / jquery代码,应该打开一个新页面,但是打开2:
$('.div_link').live('click', function(){
window.open($(this).attr('url'), '_blank', 'toolbar=no,resizable=yes,location=yes,menubar=yes');
});
<div class="div_link" url="/test/as/8888888-888">8888888-888</div>
所以,一切都运行正常,除了我得到两个具有完全相同内容的新窗口。 我看到有人建议在onclick事件中返回false有什么关系,但我认为不是这里的情况。
另外,我尝试过这样的事情:
var handler = window.open(...);
修改 尝试了gdoron建议的相似内容但是它没有打开任何窗口,并且没有触发click事件。
$('div.div_link').on({
click: function(){
window.open($(this).attr('url'), '_blank','toolbar=no,resizable=yes,location=yes,menubar=yes');
return false;
}});
答案 0 :(得分:3)
导致这种情况的原因是什么:
div_link
和事件气泡。关于最后一个选项,请使用on
代替不推荐使用的(1.7) - 删除(1.9)live
函数:
$('#containerId').on('click', '.div_link', function(){
window.open($(this).attr('url'), '_blank', 'toolbar=no,resizable=yes,location=yes,menubar=yes');
return false;
});
与on
不同,您可以停止live
中的冒泡。
答案 1 :(得分:0)
我也遇到了同样的问题,我通过给第二个参数一个固定的名称而不是使用_blank来解决。 含义如下:
$('.div_link').live('click', function(){
window.open($(this).attr('url'), 'myFixedName', 'toolbar=no,resizable=yes,location=yes,menubar=yes');
});
此解决方案不会阻止双击,但会产生所需的行为。 我希望它能对某人有所帮助。
答案 2 :(得分:-1)
删除第二行的“ _blank”。它解决了我同样的问题。