Наше решение состоит в том, чтобы включить полные библиотеки jQuery UI и jQuery Tools, но добавить небольшое исправление javascript, которое переименовывает jQuery UI в tabs
, чтобы оно не мешало jQuery Tools (которое содержит функцию tabs
, которую мы используем в наш сайт.) Сначала мы импортируем пользовательский интерфейс jQuery, затем выполняем исправление, а затем импортируем инструменты jQuery.
JQuery-UI-jquerytools-tabsconflictfix.js:
// Both jQuery UI and jQuery Tools define a tabs function on jQuery objects.
// We use both libraries (jQuery Tools for its non-restricting tabs function and overlay; jQuery UI for autocomplete.)
// To avoid a conflict over tabs, rename the jQuery UI tabs. Call this code after loading jQuery UI but before
// calling jQuery Tools.
var oldTabs = $.fn.tabs;
delete $.fn.tabs;
$.fn.jQueryUiTabs = oldTabs;
Желательно настроить это так, чтобы другие программисты не могли случайно избежать этого. Мы находимся в среде ASP.NET MVC 4, поэтому мы создаем пакет скриптов, который автоматически включает скрипты в правильном порядке:
App_Start \ BundleConfig.cs
namespace OurWebApp
{
public class BundleConfig
{
/// <summary>
/// Good Bundling resource, succinctly highlighting a range of ways to use this feature:
/// http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification
/// </summary>
/// <param name="bundles"></param>
public static void RegisterBundles(BundleCollection bundles)
{
...
bundles.Add(new ScriptBundle("~/js/jquery-ui-and-tools").Include(
"~/Scripts/jquery-ui-1.9.2.min.js",
// Both jQuery UI and jQuery Tools define .tabs on jQuery objects. We use
// jQuery Tools' version, and this fix renames jQuery UI's version to get it out of the way.
// So the load order must be: jQuery UI, the fix, and then jQuery Tools
"~/Scripts/jquery-ui-jquerytools-tabsconflictfix.js",
"~/Scripts/jquery-tools-1.2.7.min.js"));
...
}
}
}