2012-01-24 137 views
0

我有一個鏈接正從錨標籤href值

<ul class="sub_menu"> 
    <li><a href="caps">Caps</a></li> 
    <li><a href="jeans">Jeans</a></li> 
    <li><a href="shorts">Shorts</a></li> 
    <li><a href="foootwear">Footwear</a></li> 
</ul> 

我要搶href價值,我想下面的代碼:

$(document).ready(function() { 
    $('ul.sub_menu a').click(function() { 
     var txt = $(this).attr('href'); 
     alert(txt); 
    )}; 
)}; 

,但我得到這個錯誤

The requested URL /new/caps was not found on this server. 

我不想搶文,我用.text();成功了,我想價值。

回答

4

return false添加到您的click事件處理程序的末尾以停止鏈接的執行。

$(document).ready(function() { 
    $('ul.sub_menu a').click(function() { 
     var txt = $(this).attr('href'); 
     alert(txt); 
     return false; 
    )}; 
)}; 

您也可以使用event.preventDefault()如果你希望事件仍然向上傳遞DOM:

$(document).ready(function() { 
    $('ul.sub_menu a').click(function(event) { 
     var txt = $(this).attr('href'); 
     alert(txt); 
     event.preventDefault(); 
    )}; 
)}; 

注:在一個jQuery的事件處理程序,return false;是與調用event.preventDefault().stopPropagation();

+0

+1指出爲什麼你可能想使用的preventDefault來代替,而最快的答案!歡呼 – Craig

+0

@jasper你的代碼爲我工作我進一步通過$ .ajax通過它,並檢索一些數據使用該href值,但地址欄中的鏈接是新的/#我想要它新/帽 – sajid

+0

你知道,如果你改變地址欄中的URL會將頁面更改爲新的URL?在地址欄中可以更改的唯一一條信息不會將用戶轉發到新頁面,而是散列(通過'#'符號的所有內容)。我不確定你想成爲你的最終結果,但如果你只是想保存頁面的狀態,然後將其保存在URL的散列。 – Jasper

0

你需要做到以下幾點:

$(document).ready(function() { 
    $('ul.sub_menu a').click(function(e) { 
     e.preventDefault(); 
     var txt = $(this).attr('href'); 
     alert(txt); 
    )}; 
)}; 

聲明:e.preventDefault();這阻止的默認鏈接行爲,當你點擊它(導航到)。

0

試試這個

$(document).ready(function() { 
$('ul.sub_menu a').click(function() { 
    var txt = $(this).attr('href'); 
    alert(txt); 
    return false; 
)}; 
)}; 
0

它看起來像有兩個問題:

  1. 你需要使用event.preventDefault();return false停止點擊

  2. 你需要在您的代碼中修復)。現在他們不合適。在這兩種情況下你都有)};。應該});

代碼應該是

$('ul.sub_menu li a').click(function() { 
    event.preventDefault(); 
    var txt = $(this).attr('href'); 
    alert(txt);  
}); <-- here is where the parantheses are wrong. 

http://jsfiddle.net/jasongennaro/Lz2Sw/