preventDefault停止window.location.href工作

时间:2013-10-07 09:55:50

标签: javascript jquery-ui jquery-ui-autocomplete preventdefault

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

1 个答案:

答案 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而不是停止动作,这有效!