2012-03-09 37 views
0

我有以下代碼jQuery的preventDefault()方法不工作的第一次點擊

$("#logoutLink").click(function(event) { 

    event.preventDefault(); 

    var dataString = "action=confirm"; 

    $.ajax({ 
     type: "POST", 
     url: "requests.php", 
     data: dataString, 
     success: function(msg) { 
      if (msg == "success") { 
       alert('logged out'); 
      } else { 
       showNotification("error", "" + msg + ""); 
      } 
     }, 
     error: function() { 
      showNotification("error", "Could not log you out at this time, try again."); 
     } 
    }); 

    return false; 
}); 

,並使用id =「logoutLink」

一個鏈接的preventDefault不工作第一次因爲登錄系統沒有按刷新鏈接並添加鏈接的HTML內容,其中是註銷鏈接,因此該項目不存在於HTML中,我知道這是問題,但我的問題是如何讓它知道HTML內容有已添加鏈接ID logoutLink沒有頁面刷新?

+1

如此混亂。請讓一位朋友閱讀你的問題。請重寫這個問題。我有NFI你想要什麼 – 2012-03-09 21:01:28

+0

哈哈,好的這裏是事情,我有一個登錄系統,它使用jQuery和登錄用戶,而無需刷新頁面,登錄時,有一個名爲選項的ID與jquery添加鏈接div使用.html()方法,因此原始的html,當你查看頁面的源代碼時沒有,然後我有php,如果用戶登錄了,並且在那裏鏈接那些鏈接(在這種情況下直接添加它到沒有jQuery的HTML)。註銷是其中一個鏈接,當第一個jquery登錄用戶並將鏈接添加到該div時,註銷鏈接不會與.click()方法一起使用 – Grigor 2012-03-09 21:04:11

+0

我的問題是如何讓它知道有一個註銷鏈接,即使頁面不刷新,鏈接只通過jquery添加,而不是html – Grigor 2012-03-09 21:04:34

回答

2

你的問題並不清楚,但它是動態添加鏈接,你應該使用.live('click', ...)或新的jQuery 1.7 .on()

+0

工作,謝謝! – Grigor 2012-03-09 21:06:16

3

你的問題是有點混亂,但嘗試使用live()綁定你的事件處理程序:

$("#logoutLink").live('click', function(event) { 
    // ... 

更多信息請參見http://api.jquery.com/live/

+0

工作,謝謝! – Grigor 2012-03-09 21:06:06

0

,你只需要登錄系統添加鏈接後添加點擊處理程序$("#logoutLink").click(function(event) {},所以我會做以下

function addHandlers(){ 
    $("#logoutLink").click(function(event) { 
     event.preventDefault(); 
     // anything else 
    } 
} 

$(document).ready(function(){ 
    addHandlers(); 
}); 

然後還呼籲addHandlers();當鏈接被添加

+0

不是一個真正的解決方案,.live()爲我工作 – Grigor 2012-03-09 21:05:59

相關問題