2011-03-15 73 views
3

我有一个基于jquery工具的标签工作得很好,并在每个选项卡上使用ajax加载页面。其中一个页面已经得到了另一方,这需要将下面的代码的工具准备好后运行:jquery工具:调用文档就绪初始化由脚本加载的脚本

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

我注意到知道在哪里把这个代码(在AJAX加载页面)。根据流媒体家伙:

“脚本标记应放置在不在document.ready()事件内部的HTML元素之下,因为该事件未针对使用AJAX加载的页面触发。

这是否意味着封装在<script></script>标签之上,并放在</html>之后的标签?这是超出整个文档,所以它看起来不正确...

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

感谢

+0

这听起来像它应该只是之前''。 – stealthyninja 2011-03-15 00:20:34

回答

0

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

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

了解更多API for load()

+0

这个答案似乎很明显,多余,必须有一个更有效的方式来运行加载Ajax文档上的docload函数 – austinbv 2011-03-15 00:26:19

+0

@Andrew:我不认为OP使用'load',根据jQuery Tools的演示来判断。您可以指定一个目标html页面,并且jQuery Tools将在幕后使用AJAX来检索内容。 – 2011-03-15 00:26:35

+0

@zobgib这是多么的多余? – 2011-03-15 00:28:38

0

这是一个远射,但我敢肯定你可以利用onClick事件。我相信即使通过AJAX加载标签内容,也会触发此操作。你会写这样的东西:

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

我希望这对你有效。如果确实如此,那么它是严重无证的。

+0

当然,如果'onclick'事件回调运行_before_ AJAX调用...(但没有任何方法可以做到这一点,我可以看到) – 2011-03-15 01:33:47

+0

@Andrew M.您可以定义一个'onBeforeClick'的事件处理程序。这和看到源头让我认为这可能工作。 – 2011-03-15 01:35:41

+0

“onBeforeClick”甚至意味着什么?浏览器在它发生之前感应到即将发生的点击事件吗?哈哈 – 2011-03-15 01:39:48

0

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

一)加载之前标签加载脚本,所以你不应该等待脚本加载

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

对我来说,它的结构性问题,而不是脚本问题。这意味着,WHEN/HOW/WHERE选项卡数据和脚本在ajax调用中加载。如果您在发生这种情况时共享演示链接,更好的方法是。我会很高兴的帮助。

让我知道如果我理解您的问题