0

我的網站上有兩個廣告,其中一個使用腳本解析網站上的所有鏈接,並對它們執行preventDefault() ...這使我無法使用preventDefault ()在任何鏈接,因爲它只能做一次...但在過去,我已經能夠解決這個問題,使用return false。由於某些原因,它不適用於jQuery ui自動完成功能(請參閱下面的代碼)。preventDefault停止工作的window.location.href

如果關閉廣告,腳本可以正常工作。否則,它只是重新加載頁面,因爲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

此代碼的行爲是什麼,以及您的預期行爲是什麼? 'return false'和e.preventDefualt()有相同的效果。 e.cancelBubble()',這是否解釋你所看到的? – Halcyon

+0

看到我的編輯,我的意圖是重定向到perm鏈接..但返回false;不會火.. – OZZIE

+0

我不明白,'返回false'不應該阻止重定向。你的意思是你選擇的回調沒有被調用? 'autocomplete'是否適用於'a'元素? – Halcyon

回答

0

我發現一種可行的解決方案:

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

釋: 了jQuery-UI的自動完成功能創建一個鏈接列表()標籤都有效,通常你會使用preventDefault()從經歷到HREF地址,因爲在我的情況下停止瀏覽器那是不可能的我嘗試使用return false來代替,但既然這不起作用,在這種情況下,我終於想通了,爲什麼不改變鏈接標籤href到正確的網址,而不是停止行動,這是行得通的!