2012-09-04 76 views
0

工作,這是我的代碼從一個同事誰離開接手:設置location.href不從<a>點擊

<input type="text" class="value" placeholder="0"></span><br> 
<a href="/model/act/id/'.$model->id.'" class="act act-a" url="/model/act/id/'.$model->id.'">Act Now</a> 

<script> 
    $('.act-a').click(function(){ 
     if(parseInt($('.value').val())>0){ 
      //window.location.href = window.location.origin + $(this).attr('url') + '?r=' + parseInt($('.value').val()); 
      window.location.replace("www.google.com"); 
      return true; 
     } 
     return false; 
    }); 
</script> 

當我點擊鏈接,我從來沒有重定向到www.google.com 。最初我想要執行註釋的代碼,但設置www.google.com進行調試,我認爲我意識到我的重定向被忽略,而是使用原始的href!

如何設置window.location.href鏈接已被點擊,添加GET參數?

+0

'return true;'告訴瀏覽器執行鏈接的默認操作。刪除兩個返回語句,並添加'e.preventDefault();'(確保將'.click'改爲'$('。act-a')。click(function(e){')。 –

+0

@Rocket什麼是共振使用e.preventDefault()而不是返回false? –

+0

@FAngel:我只是persoanlly喜歡使用'preventDefault' –

回答

2

return true;通知瀏覽器執行鏈接的默認操作。所以,瀏覽器是按照鏈接而不是運行window.location

同時刪除return語句,而是添加e.preventDefault();

$('.act-a').click(function(e){ 
    e.preventDefault(); 
    if(parseInt($('.value').val(), 10) > 0){ 
     window.location.href = window.location.origin + $(this).attr('url') + '?r=' + parseInt($('.value').val(), 10); 
    } 
}); 

附:您應該將,10添加到parseInt以確保該數字解析爲基數爲10.

+1

奇妙地工作,謝謝!我正在使用preventDefault,因爲在這兩種情況下,我都會覆蓋該鏈接:如果未設置該值,則應該不執行任何操作;如果設置了該值,我需要將它作爲GET參數傳遞。如果我理解正確的話,這意味着如果一些其他處理程序被掛在事件上,如果我不使用'return',它將繼續執行;因爲我知道沒有其他處理程序我喜歡preventDefault(謝謝gonchuki和+1的解釋) – faboolous

+0

@fablife:我非常確定'return false'會停止所有其他處理程序,而'preventDefault'只是停止默認操作。 –

2

將window.location中的reutrn改爲true返回false;

$('.act-a').click(function(){ 
    if(parseInt($('.value').val())>0){ 
     //window.location.href = window.location.origin + $(this).attr('url') + '?r=' + parseInt($('.value').val()); 
     window.location.replace("www.google.com"); 
     return false; 
    } 
    return false; 
}); 

返回的事件,如點擊假的,提交和其他防止此類事件的默認行爲。只有當你想運行一個函數,然後讓事件傳播給其他常規監聽器,比如跟隨一個鏈接的href,繼續正常的表單提交等等,才能使用return true ...本文對於事件冒泡基礎知識有幫助:http://www.quirksmode.org/js/events_order.html