【发布时间】:2015-02-15 20:54:01
【问题描述】:
您好,我正在动态填充 ul - li HTML 标记中的列表。我只需要获取相应ul的选定li的值。我尝试了所有可能的 jquery 方法,但仍然未定义。我将 ul - li 填充为:
jQuery.get(url, function(data) {
for(i=0;i<data.length;i++){
//console.log(data[i]) //"+data[i]+"
msg = "<li> <a href=#>"+data[i]+"</a></li>";
document.querySelector('#option1').innerHTML += msg;
}
});
HTML 部分如下:
<body>
<div class="wrap">
<div class="content">
<div class="cate-map">
<ul id="option1" onclick="doSelection()">
</ul>
</div>
</div>
<div class="content2">
<div class="cate-map">
<ul id="option2">
</ul>
</div>
</div>
<div class="clear"></div>
<div class="content3"> <textarea id="content4"></textarea>
</div>
</div>
</body>
onclick 方法如下:
function doSelection(){
var id = $('#option1 li.selected').attr('value');
alert(id);
}
问题是我的 id 值“未定义”。
更新
正如大家所建议的,我将代码更改为:
将 ul 填充为:
jQuery.get(url, function(data) {
for(i=0;i<data.length;i++){
msg = "<li data-input="+data[i]+" class='selected'> <a href=#>"+data[i]+"</a></li>";
document.querySelector('#option1').innerHTML += msg;
}
});
HTML ul 为:
<div class="cate-map">
<ul id="option1" onclick="doSelection()">
</ul>
</div>
Onclick 函数为:
function doSelection(){
alert($('#option1 li.selected').attr('data-input'));
}
现在我得到一个值作为警报,但我总是将第一个元素作为警报。无论我点击哪个元素,仍然总是得到列表的第一个元素。请帮忙。
【问题讨论】:
-
你能不能在你的ul里面提供完整的html
-
<li>元素没有value属性。 -
任何时候你添加类
selected和value到想要的li? -
你没有类名为
selected的li。 -
@FrédéricHamidi
<li>实际上有value属性,如果它的父级是<ol>w3.org/TR/html-markup/li.html#li.attrs.value 题外话
标签: javascript jquery html