.live .toggle(close)在ajax请求后无法正常工作

时间:2012-01-31 16:55:59

标签: ajax jquery

我有一个带有新帖子的ajax请求,每个帖子都有一个切换按钮来显示和隐藏默认隐藏的元素。

下面的代码有效,但是插入的ajax数据只能在第一次(打开)而不是第二次(关闭)时使用

$(".voice_btn").live( 'click', function(){
    $(this).toggleClass('active voice_btn');
    $(this).closest('.element').children('.voice_box').toggle(300);
    $('.tipsy').hide();
    $(this).attr("title", ($(this).hasClass("active")?"Close":"Open") + " voicebox");
    return false;
});

2 个答案:

答案 0 :(得分:3)

如果从元素中删除voice_btn类,它将不再触发click事件,因为它不再满足选择器。

变化

$(this).toggleClass('active voice_btn');

$(this).toggleClass('active');

答案 1 :(得分:2)

只更新第2行以仅切换活动类,因为在第一次运行代码后,删除了voice_btn类,并且您的实时函数不再附加到您的元素:

$(".voice_btn").live( 'click', function(){
    $(this).toggleClass('active'); // <- notice the change in this line
    $(this).closest('.element').children('.voice_box').toggle(300);
    $('.tipsy').hide();
    $(this).attr("title", ($(this).hasClass("active")?"Close":"Open") + " voicebox");
    return false;
});