2011-05-31 74 views
3

在警報中,我總是得到undefined ...爲什麼?href總是「未定義」

<script type="text/javascript"> 

$(document).ready(function(){ 
    $("#menu ul li").click(function() { 
     var path = $(this).attr("href"); 
     alert (path); 
     $.get(path, function(data) { $("#texte").html(data); }); 
     return false; 
    }); 
}); 

</script> 

</head> 

<body> 

<div id="wrapper"> 

<div id="menu"> 
    <ul> 
    <li><a href="pulse/data/blocks/intro.html">Intro</a></li> 
    <li><a href="pulse/data/blocks/presentation.html">presentation</a></li> 
    <li><a href="pulse/data/blocks/pourquoi.html">pourquoi ?</a></li> 
    <li><a href="pulse/data/blocks/forfaits.html">forfaits</a></li> 
    </ul> 
</div> 
+0

不是$(本)的列表項(li),而不是錨(a)?如果是這樣,「href」不是li的屬性。 – lance 2011-05-31 14:25:04

回答

9

您需要選擇a標籤。

var path = $('a', this).attr("href"); 
2

您需要選擇元素:因爲您是分配上的LI元素,而不是A元素的點擊處理程序

$(document).ready(function(){ 
    $("#menu ul li").click(function() { 
     var path = $(this).find("a").attr("href"); 
     alert (path); 
     $.get(path, function(data) { $("#texte").html(data); }); 
     return false; 
    }); 
}); 
2

這是正確的:

$("#menu a") 
2

您正在尋找您的列表項(li)的href。你的代碼更改爲以下:

$("#menu ul li a").click(function() { 
2

您正在試圖讓li元素的href屬性。您可能正在尋找a元素上的href屬性。使用此選擇,而不是:

$("#menu ul li a") 

它或許可以從選擇去除要麼ulli也被降低。

2

問題是$(this)引用<li>元素而不是它的鏈接。您可以通過使用以下選擇器來解決此問題:

var path = $("a", $(this)).attr("href"); 
1

您錯過了標記。

$("#menu ul li a").click 
1

你jQuery是引用錯誤的元素: 而不是引用你需要引用UL LI A元素的UL Li元素,如下圖所示:

$(document).ready(function(){ 
    $("#menu ul li **a**").click(function() { 
     var path = $(this).attr("href"); 
     alert (path); 
     $.get(path, function(data) { $("#texte").html(data); }); 
     return false; 
    }); 
});