我有一个简单的jQuery脚本。我使用.ajax()从我的数据库中获取一些信息,它完美无缺。
问题是php-code创建xhtml代码,带有不同类的a-tags,如.info,.delete和.edit。
我想点击我的.info链接时做的事情。 我试过这段代码:
$('a.info').click(function (e) {
e.preventDefault();
alert('Do stuff');
});
它根本不起作用,没有发生。 firebug没有给我任何错误,所以我不知道如何解决这个问题。
$('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 :(得分:4)
使用.live
$('a.info').live('click', function (e) {
e.preventDefault();
alert('Do stuff');
});
$('a').live('click', function (e) {
e.preventDefault();
alert('Do Stuff 2');
});
答案 1 :(得分:1)
使用$ .live。 $ .click在当前存在的对象上注册click事件。使用$ .live意味着在将新元素添加到页面时,您的点击事件基本上会重新注册。
答案 2 :(得分:0)
看起来你正在从AJAX请求中获取HTML。 click函数将为您在调用时知道的对象设置处理程序 - 在这种情况下,它是在加载DOM之后但在返回AJAX请求之前。
要处理加载DOM后添加的任何对象的click事件,请使用live
函数:
$('a.info').live('click', function (e) {
e.preventDefault();
alert('Do stuff');
});