【问题标题】:preventDefault stops window.location.href from workingpreventDefault 停止 window.location.href 工作
【发布时间】: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;
  }
});

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 2021-05-12
    相关资源
    最近更新 更多