我的网站上有两个广告,其中一个广告使用的脚本解析网站上的所有链接并对其进行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;
}
});
答案 0 :(得分:0)
我找到了一个有效的解决方案:
select: function(event, ui) {
$('.ui-autocomplete a').attr('href', '/id/'+ ui.item.id +'/'+ ui.item.label +'/');
}
<强>阐释:强>
jquery-ui-autocomplete函数创建了一个links()-tags列表,通常你会使用preventDefault()
来阻止浏览器进入href地址,因为在我的情况下我不能尝试使用{ {1}}但是因为在这种情况下我无法工作,我终于想到了,为什么不将链接标签href改为正确的url而不是停止动作,这有效!