0

我的网站上有两个广告,其中一个使用脚本来解析网站上的所有链接并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;
  }
});
4

1 回答 1

0

我找到了一个可行的解决方案:

  select: function(event, ui) {
     $('.ui-autocomplete a').attr('href', '/id/'+ ui.item.id +'/'+ ui.item.label +'/');     
  }

说明: jquery-ui-autocomplete 函数创建一个链接 ()-tags 列表,通常你会使用它preventDefault()来阻止浏览器通过 href 地址,因为在我的情况下,我尝试使用它是不可能的,return false但是因为那在这种情况下也不起作用,我终于想通了,为什么不将链接标签 href 更改为正确的 url 而不是停止操作,这有效!

于 2013-10-08T07:32:25.627 回答