2012-02-12 211 views
2

該函數可以工作,但彈出窗口只有在點擊兩次按鈕後纔會打開(然後,隨後的點擊會在第一次點擊時獲得操作)。jquery點擊href鏈接 - 必須點擊兩次

$(document).ready(function(){ 
    $('a#printPosBtn').on('click', function(e) { 
     e.preventDefault(); 
     $('.printPopup').popupWindow({ 
      centerBrowser:1, 
      height:500, 
      width:720, 
      scrollbars: 1, 
      resizable: 1 
     }); 
     return false; 
    }); 
}); 

怎麼了?

+0

'e.preventDefault();'在代碼中執行與'return false;'相同的操作。 – elclanrs 2012-02-12 19:31:46

+0

代碼沒有明顯的錯誤。我們可能必須查看實際頁面才能調試發生的原因。 – jfriend00 2012-02-12 19:33:28

+0

是的,你真的用這樣的雙重取消來擊敗你自己的原因。另外,你在jquery上使用了一些非常古老的工作,你知道你可以輕鬆地重寫那些更簡單的'$(function(){$(「#printPosBtn」)。click(function(event){e.preventDefault();/*完成工作* /});});' – SpYk3HH 2012-02-12 19:36:07

回答

2

我認爲這是因爲你實際上正在初始化click處理程序中的插件。通過快速瀏覽popupWindow文檔,看起來該插件負責爲您綁定一個click處理程序,這意味着您的第一次點擊綁定了彈出功能(包括onclick處理程序),因此只有在第二次點擊時纔會起作用。我會嘗試:

$(document).ready(function() { 

    $(".printPopup").popupWindow({ 
     centerBrowser: 1, 
     height: 500, 
     width: 720, 
     scrollbars: 1, 
     resizable: 1 
    }); 

    // open popup by clicking on some other element 
    $('#printPosBtn').on('click', function(e) { 
     e.preventDefault(); 
     $(".printPopup").click();   
    }); 

});​ 
+1

Yeap,這個工程。你所說的一切都是正確的。謝謝。 – 2012-02-12 20:32:10