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