jQuery $(this).val返回0

时间:2011-09-20 18:35:25

标签: jquery

我有一个这样的简单列表:

<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.

7 个答案:

答案 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/