jquery工具:在ajax加载的脚本中调用docready初始化

发布于 2024-10-21 16:42:30 字数 479 浏览 2 评论 0原文

我有一个基于 jquery 工具的选项卡工作得很好,并且在每个选项卡上我使用 ajax 加载页面。其中一个页面已经从另一方获得了工具,这需要在准备好时运行以下代码:

$(function() { $('.scroll-pane').jScrollPane({showArrows: true}); });

我注意到该代码应该放在哪里(在ajax加载的页面中)。根据 flowplayer 的说法:

“脚本标签应该放置在 HTML 元素下方,而不是放置在 document.ready() 事件中,因为使用 AJAX 加载的页面不会触发该事件。”

这是否意味着将上述内容封装在 标记中,并放置在 标记之后?这在整个文档之外,所以看起来不正确...

帮助任何人...我应该将我的初始化代码放在 ajax 文档中的哪里?

谢谢

I have a jquery tools based tabs working great, and on each tab I load pages using ajax. One of the pages has got tools from another party, which requires the following code be run when ready:

$(function() { $('.scroll-pane').jScrollPane({showArrows: true}); });

I'm note sure where to put this code (in the ajax loaded page). According to the flowplayer guys:

"The script tag should be placed below the HTML elements not inside the document.ready() event because that event is not fired for the pages that are loaded with AJAX."

Does that mean encapsulate the above in <script></script> tags, and place after the </html> tag? That's outside the whole doc so it doesn't seem right...

Help anyone...where should I put my initialization code in the ajax doc?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

柠檬心 2024-10-28 16:42:31

将其作为 AJAX 加载的回调运行,这样代码将在 HTML 加载到 DOM 后运行。

$('#result').load('ajax/test.html', function() {
  $(function() { $('.scroll-pane').jScrollPane({showArrows: true}); });
});

请在 load() 的 API 中了解更多信息。

Run it as a callback for the AJAX load, this way the code will be run after the HTML has been loaded into the DOM.

$('#result').load('ajax/test.html', function() {
  $(function() { $('.scroll-pane').jScrollPane({showArrows: true}); });
});

Read more in the API for load().

時窥 2024-10-28 16:42:31

这是一个不太可能的事情,但我很确定您可以利用 onClick 事件。我相信这是在标签内容加载后触发的,即使是通过 AJAX 也是如此。您可以写这样的内容:

$("ul.tabs").tabs("div.panes > div", {
    effect: 'ajax',
    onClick: function(event, index) {
        $('.scroll-pane').jScrollPane({showArrows: true});
    }
});

我希望这对您有用。如果确实如此,则严重无证。

This is kind of a long shot, but I'm pretty sure you could tap into the onClick event. I believe this is fired after the tab content is loaded, even via AJAX. You would write something like this:

$("ul.tabs").tabs("div.panes > div", {
    effect: 'ajax',
    onClick: function(event, index) {
        $('.scroll-pane').jScrollPane({showArrows: true});
    }
});

I hope this works for you. If it does, it's severely undocumented.

一抹淡然 2024-10-28 16:42:31

如果我正确理解您的问题,将有两种方法来解决此问题。

a) 在选项卡加载之前加载脚本,因此您不应该等待脚本加载

b) 将脚本动态加载到主页并调用回调,

以防 b 您应该这样做:

 function loadScript(sScriptSrc, oCallback) {
    var oHead = document.getElementById('head')[0];
    var oScript = document.createElement('script');
    oScript.type = 'text/javascript';
    oScript.src = sScriptSrc;
    // most browsers
    oScript.onload = oCallback;
    // IE 6 & 7
    oScript.onreadystatechange = function() {
        if (this.readyState == 'complete') {
            oCallback();
        }
    }
    oHead.appendChild(oScript);
}

对我来说,它的结构问题,不是脚本问题。这意味着,何时/如何/何处选项卡数据和脚本在 ajax 调用上加载。更好的方法是如果您分享发生这种情况的演示链接。我很乐意提供帮助。

如果我理解您的问题,请告诉我

If I understand your issue properly , there will be two ways to fix this issue .

a ) load the script prior to tab load , so you should not wait for the script to load

b ) load the scripts dynamically to main page and invoke a call back

in case b you will should do sht like this:

 function loadScript(sScriptSrc, oCallback) {
    var oHead = document.getElementById('head')[0];
    var oScript = document.createElement('script');
    oScript.type = 'text/javascript';
    oScript.src = sScriptSrc;
    // most browsers
    oScript.onload = oCallback;
    // IE 6 & 7
    oScript.onreadystatechange = function() {
        if (this.readyState == 'complete') {
            oCallback();
        }
    }
    oHead.appendChild(oScript);
}

To me its structural issue , not script issue . It means , WHEN/HOW/WHERE tab data and script is loaded on ajax call. A better way will be if you share demo link where this is happening . I ll be glad help .

Let me know if I am understanding your issue

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文