为什么我的小提琴呈现与我的测试 HTML 页面不同

why does my fiddle render differently than my test html page?

本文关键字:我的 HTML 小提琴 为什么 测试      更新时间:2023-09-26

我找到了一个小提琴,它有一个我想要的功能(http://jsfiddle.net/R5sSh/),但我无法让它在带有较新的jquery 2.X和jquery mobile 1.4.X的测试页面上工作。

我的小提琴:http://jsfiddle.net/skfneasfbif/m11v6tef/

我的示例页面,从我的小提琴创建:

<html>
<head>
  <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jquerymobile/1.4.3/jquery.mobile.min.css" />
  <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
  <script src="//ajax.googleapis.com/ajax/libs/jquerymobile/1.4.3/jquery.mobile.min.js"></script>
  <script type="text/javascript">
  $(document).ready(function() {
      $("#tabs").tabs({
          select: function(event, ui) { console.log("Tab selected"); }
      });
      $("#tabs-1 > #subtabs").tabs({
          select: function(event, ui) { console.log("subTab selected"); }
      });
  });
  </script>
</head>
<body>
  <div id="tabs">
    <ul>
      <li><a href="#tabs-1">Tab1</a></li>
      <li><a href="#tabs-2">Tab2</a></li>
    </ul>
    <div id="tabs-1">
      <p>Console.log shows 1 message : "Tab selected"</p>
      <div id="subtabs">
        <ul>
          <li><a href="#subtabs-1">Subtab1</a></li>
          <li><a href="#subtabs-2">Subtab2</a></li>
        </ul>
        <div id="subtabs-1">
          <p>Console.log shows 2 messages : "Subtab selected" & "Tab selected". I just want the Subtab selected.</p>
        </div>
        <div id="subtabs-2">
          <p>Console.log shows 2 messages : "Subtab selected" & "Tab selected". I just want the Subtab selected.</p>
        </div>
      </div>
    </div>
    <div id="tabs-2">
      <p>Console.log shows 1 message : "Tab selected"</p>
    </div>
  </div>
</body>
</html>

它呈现没有选项卡,只包含文本,并且在单击链接时不执行任何操作。

我的测试页面有什么问题? 是否有调试器可以向我显示我的错误?

编辑:我已经更新了javascript,但它仍然无法正确呈现。 我的评论中有一个测试页面。

您需要将

以下内容包含在 jQuery DOM 就绪事件处理程序函数中,因为在调用此代码时,相应的 HTML 尚不存在...

$("#tabs").tabs({
  select: function(event, ui) { console.log("Tab selected"); }
});
$("#tabs-1 > #subtabs").tabs({
  select: function(event, ui) { console.log("subTab selected"); }
});

应该是...

$(document).ready(function() {
    $("#tabs").tabs({
        select: function(event, ui) { console.log("Tab selected"); }
    });
    $("#tabs-1 > #subtabs").tabs({
        select: function(event, ui) { console.log("subTab selected"); }
    });
});

它只适用于你的jsFiddle

,因为jsFiddle会自动将你的JavaScript包装在后端的DOM就绪事件处理程序函数中。