为什么我的 fiddle 页面呈现方式与我的测试 html 页面不同?
why does my fiddle render differently than my test html page?
我发现 fiddle 具有我想要的功能 (http://jsfiddle.net/R5sSh/),但我无法在较新的 jquery [=27] 的测试页上使用它=] 和 jquery 手机 1.4.X.
我的fiddle:http://jsfiddle.net/skfneasfbif/m11v6tef/
我的示例页面,从我的 fiddle 创建:
<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 ready event handler function 中,因为调用此代码时相应的 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 就绪事件处理函数中。
我发现 fiddle 具有我想要的功能 (http://jsfiddle.net/R5sSh/),但我无法在较新的 jquery [=27] 的测试页上使用它=] 和 jquery 手机 1.4.X.
我的fiddle:http://jsfiddle.net/skfneasfbif/m11v6tef/
我的示例页面,从我的 fiddle 创建:
<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 ready event handler function 中,因为调用此代码时相应的 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 就绪事件处理函数中。