0

这是我第一次尝试使用 JQuery 选项卡。我有一个简单的文件,在单击选项卡时会加载 3 个其他 php 文件。

<div id="info">
    <ul id="info-nav">
        <li><a href="tab1.php">Tab 1</a></li>
        <li><a href="tab2.php">Tab 2</a></li>
        <li><a href="tab3.php">Tab 3</a></li>
    </ul>
</div>    

<script type="text/javascript">

    $(document).ready(function(){
        $('#info').tabs();
    });

</script>

php 文件也使用 JQuery 并正确加载。当我单独测试文件时,JQuery 部分工作正常。但是一旦它们被加载到选项卡中,JQuery 就不起作用了。即使是加载文件中 $(document).ready(function()...) 中的简单警报也不会显示。这两个文件中的 JQuery 之间是否存在冲突?谢谢你的帮助。

4

1 回答 1

0

本身没有冲突,但发生了两件事之一:

  • 浏览器拒绝在动态加载的内容中执行 <script> 标签的内容;
  • 浏览器正在执行 <script> 标记,但在ready动态加载内容时不会在文档对象上触发事件。

第二个几乎可以肯定是正确的。第一个也可能。

要找出正在发生的情况,而不是将回调alert()放在$(document).ready()回调中,只需将其放在给定 HTML 文件的 <script> 标记中,然后重新加载并选择动态加载该 HTML 文件的选项卡。在上述第一种情况下(<script> 标签根本没有被执行),警报将不会显示;在第二种情况下(就绪事件未触发),它会。

如果代码正在执行,那么您需要做的就是将代码从回调中取出并将其包装在裸 <script> 标记中;浏览器一看到它就会立即执行。否则——出于可维护性的原因,我建议在任何情况下这样做都是可取的——您需要重新设计您的应用程序,使其不依赖于执行散布在您的各种 HTML 文件中的随机 <script> 标记中包含的 Javascript ,而是使用一些统一的处理程序来处理加载选项卡内容时需要执行的任何操作。

于 2013-06-27T21:15:58.140 回答