【问题标题】:Keeping jquery scripts alive after third party ajax在第三方 ajax 之后保持 jquery 脚本存活
【发布时间】:2012-04-19 05:57:27
【问题描述】:

我知道还有其他类似的帖子,但我不知道问别人的问题是否合适。这是我认为我找到了我的问题答案的链接:other question。我认为页面上的最后一个解决方案可能是要使用的解决方案。

我仍然存在的问题是 如何 将其应用于我的场景。我的脚本都包含在一个外部函数中。它基于这个概念:

jQuery.noConflict();
jQuery(function($) {

    var Engine = {
        utils : {
            functionName : function(){
                // Do stuff in here
            },
            functionName2 : function(){
                // do something else    
            }
        },
        ui : {
            functionName : function(){
                // Do stuff in here
            },
            functionName2 : function(){
                // do something else    
            }
        },
        fixes : {
            functionName : function(){
                // Do stuff in here
            },
            functionName2 : function(){
                // do something else    
            }
        },
        tweaks : {

            functionName : function(){
                // Do stuff in here
            },
            functionName2 : function(){
                // do something else    
            }
        }
    };


    Engine.utils.functionName();
    Engine.utils.functionName2();

    Engine.ui.functionName();
    Engine.ui.functionName2();

    Engine.fixes.functionName();    
    Engine.fixes.functionName2();   

    Engine.tweaks.functionName();
    Engine.tweaks.functionName2();

});

我最终会尝试解决我的脚本在 ajax 调用更改内容后无法正常工作的问题。链接的问题是“jquery : trigger $document.ready(所以我无法修改的 AJAX 代码被执行)”。那个答案,尤其是最后一个,似乎是我正在寻找的答案,但我不确定如何在我的场景中使用它。

【问题讨论】:

  • 问题到底是什么?
  • 您访问了该链接吗?我还编辑了我的问题以澄清。
  • 您通过 Ajax 加载的内容是否包含您需要运行的 javascript,或者只是您已经拥有的功能不适用于加载的内容?
  • 第二个。内容是通过我无权访问的后端加载的。当内容刷新时,我的 jquery 不再起作用。我想这是因为 Dom 没有用新内容刷新。
  • 一个不起作用的例子可能很好......它们是事件处理程序还是其他什么?

标签: javascript jquery


【解决方案1】:

我通过 on() 的委托找到了答案。

jQuery.noConflict();
function scriptlist() {
    var $ = jQuery;
    var Engine = {
        utils : {
            functionName : function(){
                // Do stuff in here
            },
            functionName2 : function(){
                // do something else    
            }
        },
        ui : {
            functionName : function(){
                // Do stuff in here
            },
            functionName2 : function(){
                // do something else    
            }
        },
        fixes : {
            functionName : function(){
                // Do stuff in here
            },
            functionName2 : function(){
                // do something else    
            }
        },
        tweaks : {

            functionName : function(){
                // Do stuff in here
            },
            functionName2 : function(){
                // do something else    
            }
        }
    };


    Engine.utils.functionName();
    Engine.utils.functionName2();

    Engine.ui.functionName();
    Engine.ui.functionName2();

    Engine.fixes.functionName();    
    Engine.fixes.functionName2();   

    Engine.tweaks.functionName();
    Engine.tweaks.functionName2();

};

jQuery('body').on('change click.productSubmitInput',function(){
    jQuery.ready(scriptlist());
});
scriptlist();

这样,我的所有脚本将在由 change() 事件引发的内容更新后或当我的带有“productSubmitInput”类的按钮被单击时重新绑定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多