【发布时间】:2013-10-07 09:55:50
【问题描述】:
我的网站上有两个广告,其中一个使用一个脚本来解析网站上的所有链接并对其执行preventDefault()...这使我无法在任何链接上使用 preventDefault() 因为它只能完成一次......但是在过去我已经能够使用return false 解决这个问题。出于某种原因,它不适用于 jQuery ui 自动完成功能(请参阅下面的代码)。
如果我关闭广告,脚本就可以正常工作。否则它只会重新加载页面,因为return false; 似乎不起作用...
脚本我无法更改:
$(document).ready(function() {
$('a').on('click', function(e) {
e.preventDefault();
// stuff
});
)};
我的脚本:
$search.autocomplete({
source: function(request, response){
$url = "suggestions/";
$.get($url, {data:request.term}, function(data){
response($.map(data, function(item) {
return {
label: item.movie_name,
id: item.movie_id
}
}))
}, "json");
},
minLength: 2,
dataType: "json",
cache: true,
focus: function(event, ui) {
return false;
},
select: function(event, ui) {
window.location.href = ('/id/'+ ui.item.id +'/'+ ui.item.label +'/');
return false;
}
});
【问题讨论】:
-
这段代码的行为是什么,您的预期行为是什么?
return false与e.preventDefualt(); e.cancelBubble()具有相同的效果,这可以解释您所看到的吗? -
查看我的编辑,我的意图是重定向到 perm 链接.. 但返回 false;不会开火..
-
我不明白,
return false不应该阻止重定向。你的意思是你的选择回调没有被调用?autocomplete是否适用于a元素? -
jquery-ui-autocomplete 函数创建一个链接列表 ()-tags,通常你会使用
preventDefault()来阻止浏览器访问 href 地址,因为在我的不可能的情况我尝试使用return false,但由于在这种情况下这也不起作用,我终于想通了,为什么不将链接标签href更改为正确的url,而不是停止操作,这有效! -
链接标签列表是建议
标签: javascript jquery-ui jquery-ui-autocomplete preventdefault