2013-01-31 193 views
1

我有以下的HTML/jQuery代码,是应该翻开新的一页,但出口2:Window.open是开扩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建议,但然后它不会打开任何窗口,然后单击事件不会触发。

$('div.div_link').on({ 
    click: function(){ 
     window.open($(this).attr('url'), '_blank','toolbar=no,resizable=yes,location=yes,menubar=yes'); 
     return false; 
}}); 
+2

你确定函数没有被调用两次吗?尝试在window.open – Undefined

+0

+1之前添加一个console.log,注释掉'window.open ...'并添加到'console.log(“您已经点击过一次”);' –

+0

好吧,我做了你的建议,是的,该功能被称为两次。我能做些什么来叫它一次? – elithin

回答

2

,是什么原因:

  1. 您订阅的两倍。
  2. 您点击两次。
  3. 你有两个嵌套的div与类div_link和事件气泡。

对于最后一个选项,使用on代替弃用(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

+0

我做了上面提出的建议,并且函数被调用了两次。将改变生活('点击')来解决它? – elithin

+0

@elithin,你为什么不试试...? – gdoron

+0

好吧,class = div_link的div没有独特的容器,我可以使用id来绑定事件。这将需要一些重大的重构,我认为... – elithin

相关问题