Я использую jQuery TokenInput, и в моем коде есть место, где я хотел бы сделать Ajax-вызов до фактического вызова TokenInput.Однако, если я пытаюсь вызвать TokenInput из $.get
, я получаю
Uncaught TypeError: Object #<Object> has no method 'tokenInput'
Так что это работает:
$("#myfield").tokenInput('/search/', {
tokenLimit: 3
});
$("#myfield").tokenInput("add", { id: 100, name: "Fake Data" });
Ноэто не работает:
var old_value = $("#myfield").val();
$("#myfield").tokenInput('/search/', {
tokenLimit: 3
});
$.get('/search/', { q: old_value }, function (data) {
record = data[0];
$("#myfield").tokenInput("add", {id: record.id, name: record.name });
});
Так что я думаю, что мне интересно, что случилось с $.tokenInput
?Есть ли что-то, что я могу сделать, чтобы убедиться, что он доступен из $.get
?
Исходный код для jQuery.TokenInput: https://github.com/loopj/jquery-tokeninput/blob/master/src/jquery.tokeninput.js
Обновление
О Horsefeathers .Глядя на код, я вижу, что другой раздел кода (в данном случае от django-cms) использует другую версию jQuery.Это , а не в результате моего запроса $.get
, он просто находится в другой части страницы.
Вот что я не понимаю: почему это работает в одномконтекст, а не другой?Обе версии jQuery уже загружены к тому времени, когда мы получаем код $.tokenInput
.Так что же происходит с $
, так что он сохраняет .tokenInput
?
Кроме того, я подумал, что есть способ иметь две версии jQuery на одной странице и не сталкиваться с проблемами - этаверсия jQuery каким-то образом «сохранит» другую версию.Очевидно, что он может сделать это частично, так как $ .tokenInput работает в некоторых случаях времени.
К счастью, на этой странице я смог просто отключить модуль, которыйвызывает другой jQuery, но я не всегда смогу.Какие шаги я могу предпринять, чтобы справиться с этой ситуацией, учитывая, что я не могу избежать двух версий на странице?(django-cms совместим только со старой версией jQuery. Очень раздражает, но я ничего не могу с этим поделать).