function hideClose(){
var unreplied_hide_close_btn = jQuery('.commentbox-gray:not(.private-note)').length;
var close_button = jQuery("a[data-status-name='Closed'][data-cnt-id='cnt-note']");
if(unreplied_hide_close_btn > 0)
{
jQuery('#close_ticket_btn').show();
close_button.show();
if(jQuery("#helpdesk_ticket_status > option[value='5']").length <= 0)
{
jQuery("#helpdesk_ticket_status").append('<option value="5">Closed</option>');
}
}
else
{
jQuery("#helpdesk_ticket_status > option[value='5']").remove().end();
jQuery('#close_ticket_btn').hide();
var button_text = jQuery("[data-public-text='Add Public Note'] span").text();
if(( button_text == "Add Private Note"))
{
close_button.hide();
}
else
{
close_button.show();
}
}
}
如果存在具有类“Comment”的元素,则此函数会切换关闭按钮 框“不是”私人信息“。
当DOM准备好时,我正在调用此函数。
jQuery(document).ready(function(){
setInterval(function(){
hideClose();
},500);
jQuery('.commentbox').livequery(function(){
hideClose();
});
});
有些ajax调用会在添加注释时修改DOM。 此注释还有一个删除选项,通过AJAX执行。 在setInterval中调用函数将检查每半秒因为注释 可随时添加。 当执行AJAX以添加注释时,该函数被调用。 但删除注释时不会调用该函数。 删除元素后,变量“unreplied_hide_close_btn”不会更新。 根据我的观察,用于删除注释的AJAX调用是中止setInterval。 甚至livequery函数也不起作用。我也尝试过live,on,bind函数。 我想知道是否有办法检查所有DOM更改,以便可以替代setInterval。 如果没有setInterval以外的方法,请帮我解释为什么在删除笔记后没有调用函数hideClose。
这是删除笔记的AJAX调用。
<a class="red_links conv-action-icon conv-actions-delete tooltip" href="#" onclick="if (confirm('Remove this from the ticket conversation?')) { new Ajax.Request('/helpdesk/tickets/4/notes/1000313643', {asynchronous:true, evalScripts:true, method:'delete'}); }; return false;" data-original-title="Delete" twipsy-content-set="true">Delete</a>
答案 0 :(得分:0)
您应该为AJAX删除请求添加成功回调函数。在请求返回成功时,它会被调用并且您触发一个将其从DOM中删除的函数。
此外,我认为您可能需要考虑另一个选项,而不是设置检查邮件的间隔。理想的情况是,只在需要时运行一个函数,而不仅仅是检查是否存在某个函数。