我最终使用以下代码成功地实现了一些工具提示:
<a href="#" rel="tooltip" title="Tool tip text here">Hover over me</a>
然后
<script>
$('[rel=tooltip]').tooltip();
</script>
我遇到的问题是它正在使用jQueryUI工具提示(没有箭头,很丑的工具提示),而不是Bootstrap。
我需要做什么才能使用Bootstrap工具提示而不是jQueryUI?
我最终使用以下代码成功地实现了一些工具提示:
<a href="#" rel="tooltip" title="Tool tip text here">Hover over me</a>
然后
<script>
$('[rel=tooltip]').tooltip();
</script>
我遇到的问题是它正在使用jQueryUI工具提示(没有箭头,很丑的工具提示),而不是Bootstrap。
我需要做什么才能使用Bootstrap工具提示而不是jQueryUI?
tooltip
作为插件的名称。使用$.widget.bridge
为jQuery UI版本创建一个不同的名称,并允许Bootstrap插件保持命名为tooltip(尝试在Bootstrap小部件上使用noConflict
选项只会导致很多错误,因为它无法正常工作;该问题已在此处报告):$.widget.bridge('uitooltip', $.ui.tooltip);
<!-- Import jQuery and jQuery UI first -->
<script src="/js/jquery.js"></script>
<script src="/js/jquery-ui.js"></script>
<script>
// Resolve name collision between jQuery UI and Twitter Bootstrap
$.widget.bridge('uitooltip', $.ui.tooltip);
</script>
<!-- Then import Bootstrap -->
<script src="js/bootstrap.js"></script>
$('.someclass').uitooltip();
<script src="/js/jquery.js"></script>
<script src="/js/jquery-ui.js"></script>
<script>
$.widget.bridge('uibutton', $.ui.button);
$.widget.bridge('uitooltip', $.ui.tooltip);
</script>
<script src="/js/bootstrap.js"></script>
'undefined' 不是一个对象(在评估 '$.widget.bridge' 时)
。 - covard如果你必须在 bootstrap.js
之后加载 jquery-ui.js
,以下是如何实现:
<script type="application/javascript" src="/js/jquery.js"></script>
<script type="application/javascript" src="/js/bootstrap.js"></script>
<script>var _tooltip = jQuery.fn.tooltip;</script>
<script type="application/javascript" src="/js/jquery-ui.js"></script>
<script>jQuery.fn.tooltip = _tooltip;</script>
这将覆盖jquery-ui的提示,始终使用bootstrap的提示。
这对我非常有效:
如果您需要使用JQuery-UI但想要使用Bootstrap的工具提示,只需从此网站获取自定义版本的JQuery-UI。
只需取消勾选“Tooltip”选项并下载它(它将是类似于“jquery-ui-1.10.4.custom.js”的内容)。
将其添加到项目中,替换您当前正在使用的版本,然后您就可以愉快地使用了。这将避免冲突。对我而言,它像魔法一样奏效!
假定 UI 在引导程序初始化后被调用
在 UI 初始化之前存储引导函数
jQuery.fn.bstooltip = jQuery.fn.tooltip;
然后按以下方式进行调用
$('.targetClass').bstooltip();
这个解决方案对我来说似乎很有效。
// handle jQuery plugin naming conflict between jQuery UI and Bootstrap
$.widget.bridge('uibutton', $.ui.button);
$.widget.bridge('uitooltip', $.ui.tooltip);
尝试使用jQuery.noConflict(),看看是否有帮助。看起来bootstrap和jQuery正在使用相同的命名空间,也许bootstrap和jQuery工具提示加载到同一个函数中,或者其中一个被先加载。
您还可以检查哪个库被首先加载。通常,如果在javascript中声明了相同的函数两次,则使用第二个函数。
第三,检查jQueryUI包(在其网站上),看看能否下载一个不包含工具提示的版本(我已经检查过,这是完全可行的)。
有一个简单且好用的解决方案,只需重新排列您的bootstrap和jquery ui文件链接,像这样:
<script src="/js/jquery-ui.min.js" type="text/javascript"></script>
<script src="/js/bootstrap.min.js" type="text/javascript"></script>
requirejs.config({
baseUrl: 'js',
waitSeconds: 30,
shim: {
'bootstrap': {
deps: [ 'jquery', 'jquery-ui' ]
},...