jQuery preventDefault()无法在第一次点击时工作

时间:2012-03-09 20:59:31

标签: jquery click 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而没有页面刷新?

3 个答案:

答案 0 :(得分:3)

您的问题有点令人困惑,但请尝试使用live()来绑定您的事件处理程序:

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

有关详细信息,请参阅http://api.jquery.com/live/

答案 1 :(得分:2)

您的问题不明确,但是您要动态添加链接,您应该使用.live('click', ...)或新的jQuery 1.7 .on()

答案 2 :(得分:0)

只有在登录系统添加链接后才需要添加点击处理程序$("#logoutLink").click(function(event) {},所以我会执行以下操作

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

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

然后在添加链接时调用addHandlers();