以下是我的下拉列表。
<ul id="navBar" data-value="">
<li data-city-value="blore"><a href="#">Bangalore</a>
<ul>
<li data-city-value="delhi"><a href="#">Delhi</a></li>
<li data-city-value="che"><a href="#">Chennai</a></li>
<li data-city-value="jaipur"><a href="#">Jaipur</a></li>
<li data-city-value="hyd"><a href="#">Hyderabad</a></li>
<li data-city-value="mum"><a href="#">Mumbai</a></li>
<li data-city-value="pune"><a href="#">Pune</a></li>
</ul>
</li>
</ul>
以下是我尝试访问data-city-value属性的方法。
方法1)
var cityName = document.getElementById('navBar');
var city = cityName.getAttribute('data-city-value');
alert(city);
它警告&#34; null&#34;
方法2)
var cityName = document.getElementById('navBar');
var city = cityName.dataset.cityValue;
alert(city);
警报&#34; undefined&#34;。
方法3)
$('#navBar li').click(function() {
$(this).parent().data('value', $(this).data('cityValue'));
});
alert($('#city').data('value'));
警报&#34; undefined&#34;。
我检查了语法以获取数据值here
如果你能帮助我找到我在做错的地方,那将是非常有帮助的。
感谢。 :)
答案 0 :(得分:2)
在前两种方法中,您定位标识ul
的顶部navBar
。在第三种方法中,您执行$(this).parent()
,再次转到ul
元素。
该元素没有data-city-value
属性。
jquery方法应该是
$('#navBar').on('click','li', function(e) {
var city = $(this).data('city-value');
alert(city);
return false;
});
演示
答案 1 :(得分:0)
这是您遍历数据 - 城市价值属性的方法:
$('li[data-city-value]').each(function(index,element){
alert($(element).data('city-value'));
});
您还可以查看我的jsFiddle示例。
对于点击事件:
$(document).ready(function()
{
$('li').click(function() {
alert($(this).data('city-value'));
return false;
});
});
你应该返回false,因为top li元素有内部元素,它触发了内部li元素点击事件。
我的第二个jsFiddle演示。
答案 2 :(得分:0)
正如Gaby所指出的,您需要先到达
$('#navBar:first-child')