Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript preventDefault停止window.location.href的工作_Javascript_Jquery Ui_Jquery Ui Autocomplete_Preventdefault - Fatal编程技术网

Javascript preventDefault停止window.location.href的工作

Javascript preventDefault停止window.location.href的工作,javascript,jquery-ui,jquery-ui-autocomplete,preventdefault,Javascript,Jquery Ui,Jquery Ui Autocomplete,Preventdefault,我的网站上有两个广告,其中一个使用脚本解析网站上的所有链接,并在其上执行preventDefault()。。。这使得我无法在任何链接上使用preventDefault(),因为它只能执行一次。。。然而,在过去,我可以使用returnfalse来解决这个问题。由于某些原因,它不能与jQueryUIAutoComplete函数一起工作(请参见下面的代码) 如果我关掉广告,剧本就可以了。否则它只是重新加载页面,因为返回false似乎不起作用 脚本I无法更改: $(document).ready(fun

我的网站上有两个广告,其中一个使用脚本解析网站上的所有链接,并在其上执行
preventDefault()
。。。这使得我无法在任何链接上使用preventDefault(),因为它只能执行一次。。。然而,在过去,我可以使用
returnfalse
来解决这个问题。由于某些原因,它不能与jQueryUIAutoComplete函数一起工作(请参见下面的代码)

如果我关掉广告,剧本就可以了。否则它只是重新加载页面,因为
返回false似乎不起作用

脚本I无法更改:

$(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;
  }
});

我找到了一个有效的解决方案:

  select: function(event, ui) {
     $('.ui-autocomplete a').attr('href', '/id/'+ ui.item.id +'/'+ ui.item.label +'/');     
  }
解释:
jquery ui autocomplete函数创建一个链接列表()-标记,通常您会使用
preventDefault()
来阻止浏览器进入href地址,因为在我的情况下,这是不可能的,我尝试使用
return false
来代替,但在这种情况下,这也不起作用,为什么不改为将链接标签href更改为正确的url,而不停止该操作呢

此代码的行为是什么?您的预期行为是什么<代码>返回false
e.preventDefualt()具有相同的效果;e、 cancelBubble()
,这是否解释了您看到的内容?请参阅我的编辑,我的目的是重定向到perm链接。。但返回错误;我不明白,
return false
不应该阻止重定向。你是说你的select回调没有被调用吗?
autocomplete
是否处理
a
元素?jquery ui autocomplete函数创建一个链接列表()-标记,通常您会使用
preventDefault()
阻止浏览器进入href地址,因为在我的情况下,这是不可能的,我尝试使用
return false
,但是在这种情况下,这也不起作用,所以我最终想,为什么不将链接标签href改为正确的url,而不是停止该操作呢!链接标签列表就是建议