刷新ldiv内容后jQuery不工作

刷新ldiv内容后jQuery不工作,jquery,Jquery,我知道我需要用电脑。比如说。活着就是为了让它发挥作用,但我只是把h3ll弄糊涂了 我有一个从数据库中提取的数据列表。每个项目都附带一个表单,用于从数据库中删除该项目 OK这是表单的提交功能: $(document).delegate('#delete_cat_form','submit', function() { var cat = $('#cat-name-imput').val(), id = $('#cat-id-imput').val(); $.p

我知道我需要用电脑。比如说。活着就是为了让它发挥作用,但我只是把h3ll弄糊涂了

我有一个从数据库中提取的数据列表。每个项目都附带一个表单,用于从数据库中删除该项目

OK这是表单的提交功能:

$(document).delegate('#delete_cat_form','submit', function() {

    var cat = $('#cat-name-imput').val(),
    id  = $('#cat-id-imput').val();

        $.post("ajax.php", {name:cat,id:id,action:'delete_cat'}, function(data){

                //Display a brief message!
                $("#message").fadeIn(3000).html(data);

                $("#message").fadeOut(3000).html(data);

                refreshMenu(); // Refresh Menu                      
            });

    return false;

});
刷新菜单功能如下所示:

function refreshMenu(){

    $('.menu-million-dollar-wrapper').load('ajax.php', {action:'refreshMenu'}, function(data){

    });

}
函数在文档的初始加载时工作,但只工作一次。ajax从ajax.php返回更新查询后,似乎所有事件处理程序都消失了,没有任何东西再次工作

我试着阅读了一些其他的答案,这些答案似乎与may的答案相同,但出于某种原因,我无法理解这个概念

如何查询新内容并显示它,同时又不丢失任何事件处理程序

下面是调用ajax.php时返回的内容。。这是原始的,但我已经确认,它确实返回相同的HTML,但更新的项目越来越少

 <form class="edit-button" method="post" action="'.$_SERVER['PHP_SELF'].'">
    <input type="hidden" name="name" value="'.$row['name'].'"/>
    <input type="hidden" name="id" value="'.$row['id'].'"/>
    <input type="hidden" name="action" value="delete_cat"/>
    <input type="submit" value="Delete"/>
</form>

$\u服务器['PHP\u SELF']
不正确,但不应在该问题中发挥作用


这与最初用于在加载时显示表单的代码相同。

这是异步执行的:

$("#message").fadeIn(3000).html(data);
$("#message").fadeOut(3000).html(data);
在同一时刻,你正在淡入淡出同样的信息。 相反,您应该在fadeIn完成后淡出


参见manula,第一个参数是fadeing函数完成时的回调。

在jquery中,大多数东西都可以接受回调函数。所以不是

$("#message").fadeIn(3000).html(data);
$("#message").fadeOut(3000).html(data);
这样做

$("#message").fadeIn(3000, function() {
    $(this).html(data);
    $("#message").fadeOut(3000).html(data);
});

函数中的内容在淡入完成后执行

尝试将所有元素更改为类而不是ID,因为您提到了不止一个元素

$(document).on('submit', '.delete_cat_form', function() {
    var self = $(this);

    var cat = self.find('.cat-name-imput').val(),
    id  = self.find('.cat-id-imput').val();

我们能看看你的html结构吗?似乎新内容取代了
#delete_cat_form
。不相关,但您应该使用
$(this).serialize()
而不是
{name:cat,id:id,action:'delete_cat'}
。例如,如果您想添加一个字段,您只需使表单保持最新状态。
在哪里。菜单百万美元包装器是否环绕此表单?。菜单百万美元包装器是包含从数据库返回的数据的div感谢。。。当我能够使表单正确工作时,我将更改此设置。这是因为,但为什么它在首次加载时工作,而在新内容加载后不工作呢?老实说,不知道。我的猜测是ID应该是唯一的,所以它们可以用一种特殊的方式处理。不过,这不是一个很好的猜测,因为way.on()是有效的,所以它不应该在意。谢谢,伙计。。你让我疯狂地追问,这让我找到了问题所在。哈哈,我不知道修复的类是否存在,但我确实注意到HTML中拼写“input”的错误。我仍然不知道为什么它在第一次加载时可以工作,但现在可以了。