jquery live函数没有检测到ajax调用更改

时间:2013-12-06 08:28:25

标签: javascript ajax jquery dom

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>

1 个答案:

答案 0 :(得分:0)

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

此外,我认为您可能需要考虑另一个选项,而不是设置检查邮件的间隔。理想的情况是,只在需要时运行一个函数,而不仅仅是检查是否存在某个函数。