如何让Twitter Bootstrap与prototype.js一起使用?

时间:2012-08-27 05:09:52

标签: jquery twitter-bootstrap prototypejs

查看这段代码http://jsfiddle.net/u6N6T/3/。手风琴正常工作。

但是加载prototype.js时它会被破坏,请参阅http://jsfiddle.net/jWZBD/8/

我跟着http://api.jquery.com/jQuery.noConflict/使JQuery与原型一起工作,但是即使我将bootstrap.js包装在“jQuery(document).ready(function($){})”中,手风琴也不能正常工作;“

有没有人知道在加载原型时让Bootstrap工作的方法?或者我必须将所有现有的基于原型的javascripts转换为JQuery?

7 个答案:

答案 0 :(得分:6)

有同样的问题。我无法解决它,但我找到了解决方法。

首先,使用$.noConflict()并按照ShaunOReilly的说法进行操作,并将$替换为Bootstrap.js中的所有jQuery个字符。但请注意,引导程序在开始时有很多以$命名的变量 - 这些变量不是对jQuery的引用,而是变量名称的一部分。您无需更改它们。我发现搜索和替换$.$(和$)的实例可以解决问题。

接下来,不要加载bootstrap-transition插件。如果要在一个脚本中加载完整的lib,则进入并删除转换函数(它位于bootstrap.js v2.3.0顶部)。您将丢失过渡动画,但崩溃结构仍然有效。有关示例,请参阅this fiddle

这将修复用户交互的切换行为,但自动切换仍将被破坏 - 例如在页面调整大小时显示/隐藏导航菜单。要解决这些问题,只需实现自己的事件监听器并直接调用您需要的任何引导函数。请参阅api以供参考。

例如,为了解决页面调整大小的导航栏问题,我使用了以下代码:

window.onresize = function(event) {
   var nav = jQuery(".collapse");
   if (jQuery(window).width() > 940) nav.collapse('show');
   else nav.collapse('hide');
}

答案 1 :(得分:3)

对于那些使用PrototypeJS的开发人员,Bootstrap需要使用jQuery。如果您不想加载另一个库来处理Bootstrap交互,请使用此Bootstrap分支:https://github.com/jwestbrook/bootstrap-prototype

答案 2 :(得分:1)

这不是理想的,但你可以编写CSS3手风琴代码并绕过所有的jQuery混乱......在这里看到一个:Accordion with CSS3

答案 3 :(得分:0)

两个选项:

用自定义文件替换twitter js文件中的所有内容,并用“jQuery”替换所有$字符

如果这是唯一的问题,你可以编写自己的手风琴切换功能。

另一种选择是将Prototype的东西转换为jQuery。 当我可以使用jQuery时,我个人不喜欢使用Prototype。

以下是类似问题的另一个例子: jQuery & Prototype Conflict

或者可以在这里找到可能的解决方案: http://www.dynamicdrive.com/forums/showthread.php?29309-Content-Glider-and-Lighbox-Conflict

答案 4 :(得分:0)

我知道这是一个老问题,但我尝试了那里找到的所有建议都无济于事。对我有用的是稍微改变原型库以过滤某些Bootstrap事件 - 比如这里 -

https://github.com/zikula/core/commit/079df47e7c1f536a0d9eea2993ae19768e1f0554

答案 5 :(得分:0)

This article让我对使用Prototype的Bootstrap的潜在问题有所了解。那里给出的解决方法实际上运作良好。我稍微调整了第一个,并添加了一个检查Prototype是否实际加载并将其组合在一个jQueryNoConflict()中作为标准jQuery.noConflict()的替代:

Binding

答案 6 :(得分:0)

如果您使用的是bootstrap.js,请替换:

this.$element.trigger(startEvent); 

使用:

this.$element.triggerHandler(startEvent);

它会顺利运作