jQueryUI工具提示正在与Twitter Bootstrap竞争。
jQueryUI工具提示正在与Twitter Bootstrap竞争。
最终我成功地使用以下代码让一些工具提示正常工作:
将鼠标悬停在我上面
然后
我遇到的问题是它使用了jQueryUI的工具提示(没有箭头,而是很丑的工具提示),而不是Bootstrap的。
我需要做什么才能使用Bootstrap的工具提示,而不是jQueryUI的?
问题的出现原因是jQuery UI和Bootstrap都使用了相同的名称tooltip
作为插件的名称,导致命名冲突。解决方法是使用$.widget.bridge
为jQuery UI版本创建一个不同的名称,并允许Bootstrap插件保持名称为tooltip
。下面是解决方法的代码示例:
然后可以通过以下方式实例化jQuery tooltips:
$('.someclass').uitooltip();
如果使用webpack捆绑和压缩代码,可以在引入bootstrap.js
之前将jquery-ui.js
放在前面。
此外,还提到了一些其他的解决方法:
1. 如果使用ASP.Net MVC,可以在Layout.cshtml页面进行以下更改:
@Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/jqueryui") @Scripts.Render("~/bundles/bootstrap")
2. 在2020年的解决方案中,使用Bootstrap 4.5和jQuery UI 1.12.1,只需要颠倒加载.js文件的顺序即可解决。
希望以上内容能帮助解决jQuery UI Tooltips与Twitter Bootstrap之间的竞争问题。
问题出现的原因:jquery-ui的tooltips与Twitter Bootstrap冲突。
解决方法:在加载jquery-ui.js之前,将jquery.fn.tooltip赋值给_tooltip,然后加载jquery-ui.js之后,将_tooltip赋值给jQuery.fn.tooltip。
如果你必须在加载bootstrap.js之后加载jquery-ui.js,那么可以按照以下方法操作:
这样就可以覆盖jquery-ui的tooltip,始终使用bootstrap的tooltip。
在这个解决方案中,ui tooltip将被bootstrap覆盖,但是如果有人不想被覆盖,就必须使用之前的解决方案。
有一天,你会发现使用这种方法时,对话框中的关闭图标会消失。可以参考stackoverflow.com/questions/17367736/…。
这是一个很好的解决方案!对于那些需要在布局页面中加载bootstrap并在各个页面中加载jquery-ui的页面进行修复时,这个解决方案更加简洁。虽然在jquery-ui(我猜是)的css覆盖bootstrap的css时还存在一些问题(字体太大,tooltip周围有一个白色方块),但这已经很接近完美了。
问题的出现的原因是因为jQueryUI的Tooltips和Twitter Bootstrap的Tooltips之间存在竞争。解决方法是将bootrap.js文件在jquery-ui.js文件后加载,这样bootstrap中的.tooltip方法将优先生效。同时,在HTML中添加一个注释,说明必须按照特定的顺序加载这两个库。
但是,这种解决方法并不适用于所有情况。有人在使用Chrome浏览器时尝试了上述解决方法,但仍然出现了问题。有时候清除缓存并刷新页面之后,Tooltip可以正常工作,而有时候则不行(控制台没有报错信息)。在刷新了30次页面后,只有7次出现了正常的结果。为了解决这个问题,有人下载了一个定制的jQuery UI包,这样在清除缓存并刷新页面30次后,所有的30次都得到了正常的结果,且没有任何错误。这位用户还补充说,他同时使用了require.js,这样可以轻松控制库的加载顺序。
总结起来,解决这个问题的最简单逻辑的方法是将bootrap.js文件加载在jquery-ui.js文件之后。然而,这种解决方法可能不适用于所有情况。如果仍然出现问题,可以尝试下载一个定制的jQuery UI包,同时使用require.js来控制库的加载顺序。这些方法可以解决jQueryUI Tooltips和Twitter Bootstrap之间的竞争问题,使它们能够正常工作。