2012-03-09 116 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

相关问题