2012-01-24 139 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/