jquery live 函数未检测到 AJAX 调用更改


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();
             }

        }
    }

这是一个函数,如果有一个元素带有类"注释",则切换关闭按钮框",这不是"私人笔记"。

当 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。甚至实时查询功能也不起作用。我还尝试了实时、打开、绑定函数。我想知道是否有办法检查所有 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>

您应该向 AJAX 删除请求添加一个成功的回调函数。当请求返回成功时,它被调用并触发一个函数,将其从 DOM 中删除。

另外,我认为除了设置检查消息的间隔之外,您可能还需要考虑其他选项。理想情况下,您只在需要时运行函数,而不仅仅是检查是否存在某些内容。

最新更新