Javascript jquery-1.9.1.min.js与jquery.js/jquery.autocomplete.js之间的冲突
使用此自动完成脚本 其中包括:jquery.js和jquery.autocomplete.js,这些javascript是必需的 但我还必须使用jquery-1.9.1.min.js来实现autosave和其他功能 不幸的是,它们之间存在冲突。自动完成不适用于jquery-1.9.1.min.js(也不适用于jquery 1.10.1) 如果remove 1.9.1.min.js不适用于其他脚本 尝试使用Javascript jquery-1.9.1.min.js与jquery.js/jquery.autocomplete.js之间的冲突,javascript,jquery,Javascript,Jquery,使用此自动完成脚本 其中包括:jquery.js和jquery.autocomplete.js,这些javascript是必需的 但我还必须使用jquery-1.9.1.min.js来实现autosave和其他功能 不幸的是,它们之间存在冲突。自动完成不适用于jquery-1.9.1.min.js(也不适用于jquery 1.10.1) 如果remove 1.9.1.min.js不适用于其他脚本 尝试使用jQuery和jQuery.noConflict()代替一个$位于标签下方。 没有成功 尝试
jQuery
和jQuery.noConflict()代替一个$
代码>位于标签下方。
没有成功
尝试使用其他自动完成脚本,但响应非常慢
在jquery.js和jquery.autocomplete.js中,大约有3000行。。。用实验来找出问题所在似乎是不合理的
如果有人面临同样的问题,请提出建议
下面是代码(如果感兴趣的话)
jquery.js和jquery.autocomplete.js对于下面的javascript是必需的
(function ($) {
jQuery('[id^="partner_name_or_description"]').each(function (index, partner_name_or_description) {
var partner_name_or_description = partner_name_or_description.id.substring(27);
});
})(jQuery);
/**/function findValue(li) {
/*if( li == null ) return alert("No match!");
// if coming from an AJAX call, let's use the CityId as the value
if( !!li.extra ) var sValue = li.extra[0];
// otherwise, let's just display the value in the text box
else var sValue = li.selectValue;
alert("The value you selected was: " + sValue);*/
}
function selectItem(li) {
findValue(li);
}
function formatItem(row) {
return row[0] + " (id: " + row[1] + ")";
}
/*function lookupAjax(){
var oSuggest = $("#CityAjax")[0].autocompleter;
oSuggest.findValue();
return false;
}*/
/*function lookupLocal(){
var oSuggest = $("#CityLocal")[0].autocompleter;
oSuggest.findValue();
return false;
}*/
$("#partner_name_or_description1:input, #partner_name_or_description2:input, #partner_name_or_description3:input").autocomplete(
"__autocomplete_source.php",
{
delay: 10,
minChars: 2,
matchSubset: 1,
matchContains: 1,
cacheLength: 10,
onItemSelect: selectItem,
onFindValue: findValue,
formatItem: formatItem,
autoFill: true
}
);
使用jquery迁移:您不需要在插件本身中包含jquery。只需包含jquery 1.9.1,然后是jquery.autocomplete,应该很好哦,真不敢相信我的眼睛!!!简单的粘贴代码.jquery.com/jquery-migrate-1.2.1.js“>在jquery-1.9.1.min.js下面,一切都很好!这么简单的解决方案!在上面的第一个脚本中,您在本地为jquery定义范围$
,但随后使用全局jquery
,这很奇怪。
/**/function findValue(li) {
/*if( li == null ) return alert("No match!");
// if coming from an AJAX call, let's use the CityId as the value
if( !!li.extra ) var sValue = li.extra[0];
// otherwise, let's just display the value in the text box
else var sValue = li.selectValue;
alert("The value you selected was: " + sValue);*/
}
function selectItem(li) {
findValue(li);
}
function formatItem(row) {
return row[0] + " (id: " + row[1] + ")";
}
/*function lookupAjax(){
var oSuggest = $("#CityAjax")[0].autocompleter;
oSuggest.findValue();
return false;
}*/
/*function lookupLocal(){
var oSuggest = $("#CityLocal")[0].autocompleter;
oSuggest.findValue();
return false;
}*/
$("#partner_name_or_description1:input, #partner_name_or_description2:input, #partner_name_or_description3:input").autocomplete(
"__autocomplete_source.php",
{
delay: 10,
minChars: 2,
matchSubset: 1,
matchContains: 1,
cacheLength: 10,
onItemSelect: selectItem,
onFindValue: findValue,
formatItem: formatItem,
autoFill: true
}
);