我还需要做啥才能插入 jQuery UI?

Posted

技术标签:

【中文标题】我还需要做啥才能插入 jQuery UI?【英文标题】:What else do I need to do to plug in jQuery UI?我还需要做什么才能插入 jQuery UI? 【发布时间】:2016-11-29 10:28:39 【问题描述】:

我正在使用jQuery UI tabs 构建一个页面,我看到了一些效果,但不是预期的效果。用于存储选项卡标题的 UL 是连线的,因此 UL 和选项卡内容是同一个较大 DIV 的一部分。控制台包含一些描述的诊断信息,但在我的代码、其他代码、资源加载等中没有报告错误。我检查了 javascript/CSS 的链接,它们都指向看起来像 JavaScript/CSS 的真实资源:

<link href='//fonts.googleapis.com/css?family=Averia+Serif+Libre:400,700,400italic,700italic' rel='stylesheet' type='text/css' />
<link href='/jquery-ui-1.12.0.custom/jquery-ui.css' />
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script src="/javascripts/bgstretch.js"></script>

显示,就人们对 CSS 的期望而言,这正是人们在没有任何尝试应用 jQuery UI 的情况下所看到的。然而,调试器确实会显示添加的类,这些类是 jQuery UI 将 UL 和一些 DIV 转换为选项卡式显示所期望的,例如:

<a href="#living-room" class="ui-tabs-anchor" role="presentation" tabindex="-1" id="ui-id-6">Living Room</a>

原始元素未加修饰:

<a href="#living-room">Living Room</a>

我可以/应该怎么做才能让 jQuery 选项卡正常运行?

【问题讨论】:

你在哪里完成了你想要制表的部分的 html? jQuery UI 选项卡需要非常特定的选项卡布局和内容才能正常工作。 是这两个CDN吗? @jmoerdyk 我试图遵循 jQuery UI 的特定选项卡。减去一段几乎没有格式化的文本,它位于pastebin.com/PDhuFaC5。 @DulyKinsky 我试图从一个 jQuery 伞形 CDN 发出两个请求,主页位于 code.jquery.com。 为什么你的 jQuery UI css 和 js 文件来自不同的版本?您的包含路径是否正确? 【参考方案1】:

http://codepen.io/anon/pen/BzxbqY

你是否包含了 jquery ui css?

我删除了你所有的脚本并使用了

$(document).ready(function()

  $("#tabs").tabs();
);

我包括 jquery 然后 jquery ui,和 this

jquery ui css 文件。

【讨论】:

它是块中的第二个&lt;link&gt;,但它引用的jQuery UI版本与js &lt;script&gt;不同【参考方案2】:

这里有一个工作版本(基于您的代码):

https://jsfiddle.net/g3o7chw1/1/

我认为问题可能是 ui 主题 css。当我使用常规主题 cdn 时,它似乎工作正常: https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css

【讨论】:

【参考方案3】:

我认为这是因为您的脚本 CDN src 链接没有 http 协议。 而不是:

<script src="//code.jquery.com/jquery-1.10.2.js"></script>

<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

你应该有:

<script src="https://code.jquery.com/jquery-1.12.4.js"></script>

<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"></script>

【讨论】:

【参考方案4】:

看起来你有两个问题。首先,如果你粘贴的代码是准确的,说明你调用ready()方法有问题:

;(jQuery.ready(function()

    jQuery('#tabs').tabs();
()));

正如您所说,不会产生任何错误。但是,它也没有任何作用!清除多余的括号和分号,您的代码如下所示:

jQuery.ready(function()

    jQuery('#tabs').tabs();
);

现在,这里的问题是,在调用 tabs() 方法之前,您并没有说明需要准备什么,因为您没有指定要应用 ready() 方法的选择器。这意味着您的 tabs() 方法永远不会被调用。

使用ready() 方法,选择器应始终为document。因此,如果您将代码更改为:

jQuery(document).ready(function()

    jQuery('#tabs').tabs();
);

你会发现你的tabs() 函数被调用了。您会注意到 JD E 和 John Detlefs 将 $ 替换为 jQuery,这是常见的(实际上几乎无处不在)简写,但除此之外,他们也是如此。这是调用ready() 的常规方式。 (有两种等效的语法(您的不是其中之一),您可以阅读有关 here 的信息。)

您的第二个问题似乎是兼容性问题:您的目录结构表明您使用的是 jquery-ui.js v. 1.11.4 和 jquery-ui.css v. 1.12.0。如果是这样,你肯定会遇到问题,因为 1.12.0 实现了很多重大更改。看看this document。在其中,在选项卡下的部分中,您会发现:

选项卡小部件现在将 ui-tabs-tab 类而不是名称不一致的 ui-tab 添加到每个选项卡元素。

如果您实际上有目录结构所建议的不同版本的 .js 和 .css 文件,那么您可能会让 .js 文件应用 ui-tab 类,而 .css 文件会查找具有ui-tabs-tab。因此,除非它们具有向后兼容性,否则您将无法获得样式。在某些情况下他们没有。 (更新:查看 JD E 在他的回答中提供的链接,我没有看到任何关于这种变化的证据。有几个引用 ui-tab 而没有引用 ui-tabs-tab。因为 1.12.0 只发布了三周以前,也许这是一个从未真正发生过的记录更改,他们还没有时间取消记录它。但如果我是你,我仍然会让我的版本保持一致。)

我建议您确保您的 jquery-ui.js 和 jquery-ui.css 文件是相同的版本。如果您不需要支持 IE,我建议您使用 1.12.0。如果你这样做了,那么你需要研究哪些版本的 jQuery UI 支持哪些版本的 IE。 (1.12.0 放弃了对 IE 10 和更早版本的支持。)此外,此时您的 jquery.js 版本已经使用了三年,您可能会考虑升级。最新版本现在是 3.1.0(最近发布),2.2.4 已经有一段时间了。

【讨论】:

以上是关于我还需要做啥才能插入 jQuery UI?的主要内容,如果未能解决你的问题,请参考以下文章

jquery动态插入行

jQuery data() 函数是做啥的

bind_param() 中的第一个参数究竟是做啥的?

将视图插入表格 - 视图不需要很长时间才能运行 - 插入需要很长时间

如何防止多个句柄在 jQuery UI 滑块中重叠?

使用 kivy 模块运行 py 文件需要做啥