我有一个邮件收件箱,我在删除邮件后会用AJAX
刷新,从而产生一条没有邮件的新邮件收件箱。
<div class="container>
<div class="message_box">
<div class="title"> </div>
<div class="message"> </div>
<div class="title"> </div>
<div class="message"> </div>
<div class="title"> </div>
<div class="message"> </div>
</div>
</div>
我的HTML代码看起来就像那样,当文档准备就绪时,我调用了一个show / hide消息函数:
$(document).ready(function()
{
message_show();
});
function message_show()
{
$("div.message").hide();
$(document).on("click", "div.title", function()
{
$("#" + this.id + ".message").fadeToggle("fast");
$("#fold" + this.id).fadeToggle("fast");
});
}
这样可以正常工作,当页面加载时,消息被隐藏,当你点击标题时,消息就会显示出来,折叠图标也会改变。
但是,当我使用.get()
删除消息时,使用AJAX刷新内容的那一刻:
function delete_message(message_id)
{
$.get("message_inbox.php",{delete_id:message_id}, function(data)
{
$("div#messages_inbox").load("message_inbox.php div#messages_inbox > *");
// $("div.message").hide();
message_show();
});
}
使用.load
消息后,div不再被隐藏。
我设法选择div.title,使用$(document).on
来切换它们,这有效,但是当加载内容时隐藏消息似乎不起作用。
我也无法隐藏$.get
内部的div(我留下的评论部分)
答案 0 :(得分:0)
$("div#messages_inbox").load(...)
- 当#messages_inbox
完成时,您正在覆盖.load
内的所有内容。
如果div#messages_inbox > *
返回的内容中message_inbox.php
内的内容不包含div.message
或div.title
,则message_show()
似乎无效。
请参阅.load
您还希望将message_show()
作为.load
的回调函数调用,以确保在使用之前已加载内容:
function delete_message(message_id)
{
$.get("message_inbox.php",{delete_id:message_id}, function(data)
{
$("div#messages_inbox").load("message_inbox.php div#messages_inbox > *", message_show);
});
}