You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用jQuery获取li元素value/id时返回undefined的问题

jQuery点击li获取属性值返回undefined的解决方法

问题描述

尝试用jQuery实现点击<li>元素时获取其value或id属性值,但所有尝试均返回undefined。相关代码如下:

HTML代码

<ul id="list" class="content-ul">
    <li value="0"><img src="/image0.png" /></li>
    <li value="1"><img src="/image1.png" /></li>
    <li value="2"><img src="/image2.png" /></li>
    <li value="3"><img src="/image3.png" /></li>
</ul>

JavaScript代码

$( '#list li' ).click( ( event ) => {
    var value = $(this).attr('value');
    alert(value); // 返回undefined
} );

试过this.id、$(this).id,给img标签添加id和value属性,给li标签添加id属性,结果仍返回undefined。

解决方案

1. 修复箭头函数的this指向问题

箭头函数不会绑定自身的this,它会继承外层作用域的this,导致这里的this不是点击的<li>元素。有两种修复方式:

方式一:改用普通函数

$( '#list li' ).click( function( event ) {
    var value = $(this).attr('value');
    alert(value);
} );

方式二:通过事件对象获取目标元素

$( '#list li' ).click( ( event ) => {
    // currentTarget确保获取绑定事件的li元素(而非内部img)
    var value = $(event.currentTarget).attr('value');
    alert(value);
} );

2. 改用符合规范的自定义属性

<li>不是表单元素,使用value属性不符合HTML规范。建议使用data-*自定义属性存储数据:

修改后的HTML

<ul id="list" class="content-ul">
    <li data-value="0"><img src="/image0.png" /></li>
    <li data-value="1"><img src="/image1.png" /></li>
    <li data-value="2"><img src="/image2.png" /></li>
    <li data-value="3"><img src="/image3.png" /></li>
</ul>

获取属性值的代码

$( '#list li' ).click( function( event ) {
    var value = $(this).data('value');
    alert(value);
} );

3. 正确获取id属性的方式

如果给<li>添加id属性,比如:

<li id="item0"><img src="/image0.png" /></li>

正确的获取方式为:

// 原生JS方式
var id = this.id;
// jQuery方式
var id = $(this).attr('id');

注意:$(this).id是错误写法,jQuery对象没有直接的id属性,必须使用attr('id')或prop('id')。

内容的提问来源于stack exchange,提问作者Vardan Betikyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 08:22:38