jQuery.noConflict() вызывает ошибку в другом скрипте

#javascript #jquery

#javascript #jquery

Вопрос:

Я использую этот код для этого плагинаhttp://unwrongest.com/projects/defaultvalue /

 // <![CDATA[
    $.noConflict();
    jQuery(document).ready(function(){
        jQuery('.defaultval').defaultValue();
    }); 
// ]]>
  

$.noConflict(); выдает мне $ is not a function в другом скрипте в этой строке

 $( "#city" ).autocomplete({ 
  

«автозаполнение» предназначено для плагина автозаполнения пользовательского интерфейса jquery http://jqueryui.com/demos/autocomplete/#remote-jsonp

Как я могу исправить эту проблему? Удаление $.noConflict(); , кажется, решает проблему, но я хочу оставить, потому что я думаю, что это было сделано не просто так.

Ответ №1:

noConflict Функция удаляет $ псевдоним jQuery, чтобы вместо него можно было использовать другие библиотеки $ .

Вы не можете использовать noConflict с кодом, который использует $ , если вы не обернете этот код в функцию с ее собственным $ псевдонимом, написав (function($) { ... })(jQuery);

Комментарии:

1. Хм, понятно.. но какие другие библиотеки могли бы это использовать? Возможно, HTML 5? Плагин является резервным вариантом для заполнителя, поддерживаемого в HTML 5.

2. HTML5 — это набор слабо связанных стандартов браузера, а не библиотека. $ используется библиотеками, подобными Prototype.

3. Спасибо! Я думаю, что мог бы полностью удалить noConflict, поскольку я не использую никаких других скриптов.

Ответ №2:

Вам нужно поместить автозаполнение в его собственное закрытое закрытие:

 var jQueryVariableForMyUseOnly = jQuery.noConflict();

(function($){

    $(...).autocomplete(...);

})(jQueryVariableForMyUseOnly);
  

Комментарии:

1. Не могли бы вы просто использовать })(jQuery) ? noConflict удаляет только $ alias, а не сам jquery.

2. Да, вы можете, я просто нахожу этот очиститель.

Ответ №3:

просто измените это:

 $( "#city" ).autocomplete({
  

к этому:

 jQuery( "#city" ).autocomplete({
  

noConflict удаляет псевдоним в $, но jQuery все еще существует.

РЕДАКТИРОВАТЬ: альтернативно, вы можете присвоить псевдоним чему-то другому, например:

 $j = $.noConflict();
$j("#city").autocomplete({
  

Ответ №4:

измените его на:

 jQuery.noConflict();
  

редактировать: после повторного прочтения вашего вопроса. это ничего не решит. здесь нечего смотреть.