2011-03-05 72 views
1

嘿, 我有一個導航菜單和我的代碼看起來像這樣..如何使用Jquery動態獲取所有元素的屬性值?

<ul id="nav"> 
     <li><a href = "#countries" >Countries</a></li> 
     <li><a href = "#states" id="">States</a></li> 
     <li><a href = "#cities">Cities</a></li> 
     <li><a href = "#areas">Areas</a></li> 
    </ul> 

我想動態獲取所有屬性的值取決於用戶點擊例如,如果在Countires用戶點擊它應該獲取值#countries,如果用戶點擊狀態,它應該獲取值#states等等。

我知道jQuery中的.attr()。該函數只會獲取匹配元素集中的第一個元素。無論我點擊它,只會抓取#個國家。我不想成爲這種情況。

我正在使用以下jQuery代碼。

<script type="text/javascript"> 
$(document).ready(function(){ 
    //when the user clicks on Navigation Menu call this function 
    $('ul#nav li a').click(function(){ 
     //fetch the attribute value. 
     $value = $('ul#nav li a').attr("href"); 
     alert($value); 

     //Stop the default behaviour 
     return false; 
    }); 
}); 
</script> 

如何動態獲取所有屬性值並將值存儲在不同的變量中?

+1

不要忘記聲明你的局部變量。 – 2011-03-05 18:32:51

+0

另外,爲什麼$ value變量有一個$前綴?這只是一個字符串。 – 2011-03-05 18:52:15

回答

2

這將這樣的伎倆:

var $value = $(this).attr('href'); 

內單擊處理中,this價值是指被點擊的元素。

+0

謝謝你做到了。工作完全沒問題.. :) – 2011-03-05 21:14:03

2

改變這一行:

$value = $('ul#nav li a').attr("href"); 

要這樣:

var $value = $(this).attr('href'); 

甚至只是這樣的:

var $value = this.getAttribute('href'); 

(請注意,getAttribute在IE6和IE7的實施被打破)

+0

'this.href'不會。它返回完全限定的URL。看到這裏:http://jsfiddle.net/simevidas/UVefs/ – 2011-03-05 18:37:28

+0

@Šime好點!我編輯了我的答案... – 2011-03-05 18:42:32

+0

@Šime感謝您的編輯。使用經過測試的JS框架的美妙之處在於其他人已經完成了大部分跨瀏覽器測試。 – 2011-03-05 19:10:32

相關問題