jQuery .click()问题

时间:2011-02-11 10:55:11

标签: jquery click

我有一个简单的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');
});

});

3 个答案:

答案 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');
});