javascript $(this).attr('value')返回未定义[重复]

wqnecbli  于 2023-03-16  发布在  Java
关注(0)|答案(4)|浏览(171)

此问题在此处已有答案

(13个答案)
11小时前关门了。
我尝试使用jQuery在单击时获取li元素的值或id。
超文本标记语言

<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); // returns undefined
} );

我尝试使用this.id以及$( this ).id-未定义
我尝试为img标记指定idvalue-仍然未定义
我试着给li标签指定一个id-同样,未定义

doinxwow

doinxwow1#

jQuery无法使用箭头函数手动绑定this上下文。请使用常规functionevent.currentTarget访问事件侦听器附加到的元素。

$('#list li').click( ( event ) => {
    var value = $(event.currentTarget).attr('value');
    console.log(value);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<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>
67up9zun

67up9zun2#

arrow函数中的这个不引用被单击的DOM元素。

$( '#list li' ).click(function() {
    var value = $(this).attr('value');
    alert(value); // returns undefined
} );
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<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>
dsekswqp

dsekswqp3#

这应该是一个评论。
但是你想达到什么目的呢?为什么不把一个“a”标签和一个类放在一起,然后在里面放一个图像呢?
将atrribut放在“a”标签上,如下所示:
超文本标记语言

<a href="#" class="something" data-id="01"><img src="">
<a href="#" class="something" data-id="12"><img src="">

JQuery语言

$('.something').on('click', function () {
    id = $(this).data('id');
    console.log(id);
    alert("the Id is : " + id);
});

您可以创建自己的数据属性,如数据ID、数据名称等。
希望能有所帮助。

sqxo8psd

sqxo8psd4#

jQuery无法使用arrow函数手动绑定此上下文。请使用常规函数或使用event.currentTarget访问附加到事件侦听器的元素。

$('#list li').click( ( event ) => {
        var value = $(event.currentTarget).attr('value');
        // console.log(value);
        alert(value);
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <ul id="list" class="content-ul">
        <li value="0">image code0</li>
        <li value="1">image code1</li>
        <li value="3">image code3</li>
    </ul>

相关问题