我有一个这样的简单列表:
<ul id="large_box_custom_list">
<li id="8" class="large_box">Item 1</li>
<li id="13" class="large_box">Item 2</li>
</ul>
然后我有一个像这样的jQuery函数:
$(function() {
$('li.large_box').css('cursor', 'pointer')
.click(function() {
var show_id = $(this).val();
alert(show_id);
});
});
当我点击列表项时,当我期望值为8或13时,我的alery显示值为0.
答案 0 :(得分:10)
因为你应该使用standard DOM element id
property。 jQuery的.val()
方法 与元素的ID有关。
$('li.large_box').css('cursor', 'pointer').click(function ()
{
var show_id = this.id;
alert(show_id);
});
答案 1 :(得分:4)
val()
不会返回ID。您想要$(this).attr('id')
。
答案 2 :(得分:2)
你做错了。
id
属性旨在用作唯一标识符,而不是数据存储方式。
此外,.val()
旨在用于input, select, textarea
元素以访问其当前值。
如果您需要元素的属性,请使用.attr()
function。
如果您需要在元素上存储数据,请使用自定义HTML5 data-
元素:
<li data-id="8"...
<li data-id="13"...
然后,您可以使用.data()
function
var listItemIdentifier = $(this).data('id');
console.log( listItemIdentifier );
//should output 8 or 13 depending on which you click on
答案 3 :(得分:1)
尝试使用attr()
代替val()
:
$(function() {
$('li.large_box').css('cursor', 'pointer').click(function() {
var show_id = $(this).attr('id');
alert(show_id);
});
});
答案 4 :(得分:0)
使用$(this).attr('id')
<li>
不能使用非标准属性的值。
答案 5 :(得分:0)
var show_id = $(this).attr('id');
答案 6 :(得分:0)
id属性不是值属性。
您可以将其设置为获取ID:
$(this).attr("id");
或者在HTML中设置值
<li id="8" value="8" class="large_box">Item 1</li>
这是一个实例: http://jsfiddle.net/BBm4R/