2

我有以下 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;
}});
4

3 回答 3

6

什么会导致这种情况:

  1. 您订阅了两次。
  2. 你点击了两次。
  3. 您有两个嵌套的 div,其中包含类div_link和事件气泡。

关于最后一个选项,使用on而不是 deprecated(1.7)-deleted (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

于 2013-01-31T17:24:32.260 回答
2

我有这个完全相同的问题,我通过给第二个参数一个固定的名称而不是使用 _blank 来解决。含义如下:

$('.div_link').live('click', function(){
    window.open($(this).attr('url'), 'myFixedName', 'toolbar=no,resizable=yes,location=yes,menubar=yes');
});

此解决方案不会阻止双击,但会提供所需的行为。我希望它可以帮助某人。

于 2020-10-01T23:20:15.393 回答
0

删除第二行的“_blank”。它解决了我同样的问题。

于 2018-12-03T19:14:17.467 回答