2011-03-05 94 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

相关问题