#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();
редактировать: после повторного прочтения вашего вопроса. это ничего не решит. здесь нечего смотреть.