2011-02-11 52 views
0

我有一个简单的jQuery脚本。我使用.ajax()从我的数据库中获取一些信息,它的工作原理非常完美。jQuery .click()问题

问题是php代码genereate xhtml代码与不同类的标签,如.info,.delete和.edit。

我想要做的东西,当我点击我的.info链接。 我曾尝试这样的代码:

$('a.info').click(function (e) { 
    e.preventDefault(); 
    alert('Do stuff'); 
}); 

忽略了最低在所有的工作,没什么反应。萤火虫给我没有错误,所以我不知道如何解决问题。

$('a').click(function (e) { 
    e.preventDefault(); 
    alert('Do Stuff 2'); 
}); 

适用于网站上的所有链接,但不适用于从php代码生成的链接。

我的代码:

$(function(){  
$.ajax({ 
    type: "POST", 
    url: 'users.php', 
    data: 'getall=true', 
    success: function(r) { 
     $(' #content ').html(r); 
    }, 
    error: function() { 
     alert('Error'); 
    } 
}); 

$('a.info').click(function (e) { 
    e.preventDefault(); 
    alert('Do Stuff'); 
}); 


$('a').click(function (e) { 
    e.preventDefault(); 
    alert('Do Stuff 2'); 
}); 

});

+0

你应该添加生成的标记的相关片段 - 因为这似乎是问题的根源... – flitzwald 2011-02-11 10:58:00

回答

4

使用.live

$('a.info').live('click', function (e) { 
    e.preventDefault(); 
    alert('Do stuff'); 
}); 


$('a').live('click', function (e) { 
    e.preventDefault(); 
    alert('Do Stuff 2'); 
}); 
+0

我一直在类似的情况下使用它,它非常方便。 – Chris 2011-02-11 11:03:16

0

它看起来像你得到从AJAX请求的HTML。点击函数将为您在调用时知道的对象设置处理程序 - 在这种情况下,它是在DOM被加载之后但返回AJAX请求之前。

来处理加载DOM后添加任何对象的Click事件,使用live功能:

$('a.info').live('click', function (e) { 
    e.preventDefault(); 
    alert('Do stuff'); 
}); 
1

使用$ .live。 $ .click将点击事件注册到当前存在的对象上。使用$ .live意味着当新元素添加到页面时,您的点击事件基本上会重新注册。