jQuery .click()问题

我有一个简单的jQuery脚本。 我使用.ajax()从我的数据库中获取一些信息,它完美无缺。

问题是php-code genereate 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'); }); 

});

使用.live

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

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

看起来你正在从AJAX请求中获取HTML。 click函数将为您在调用时知道的对象设置处理程序 – 在这种情况下,它是在加载DOM之后但在返回AJAX请求之前。

要处理加载DOM后添加的任何对象的click事件,请使用live函数:

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