2013-01-31 116 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

相關問題