jquery 当通过JavaScript输入时

fnvucqvd  于 2023-08-04  发布在  jQuery
关注(0)|答案(2)|浏览(120)

我是一个初学者学习JavaScript。

$('.btn').on('click', function(){
    let i = 0;
    while (i < 5) {
        $(this).closest('.number').val(i)
        i++;
    }
})

个字符
我的输出:

<div class="btn">Sort</div>

<input type="text" class="number" data-id="1" value="1">
<input type="text" class="number" data-id="5" value="2">
<input type="text" class="number" data-id="4" value="3">
<input type="text" class="number" data-id="3" value="4">
<input type="text" class="number" data-id="2" value="5">


当点击.btn时,all value sort:1,2,3,4,5不会被保存。帮我解决这个问题。

v2g6jxz6

v2g6jxz61#

如果我理解正确的话,您希望“按钮”按照1-5的顺序更新input元素的值?
首先,您可能误解了.closest()是这样的。它在DOM层次结构中寻找“最接近”的匹配元素。.number元素不是.btn元素的父元素/祖先元素,因此它们都不会匹配。
您可以通过以下命令找到.number元素:$('.number')
然后,您可以使用.each()循环遍历这些元素。回调的第一个参数是结果集合中该元素的 index。它是从零开始的,所以只需添加1即可。举例来说:

$('.btn').on('click', function(){
  $('.number').each(function(i) {
    $(this).val(i + 1);
  });
});

个字符

cfh9epnr

cfh9epnr2#

使用.each循环的一个更简单的方法是向.val传递一个回调函数,第一个参数是索引。

$('.btn').on('click', () => $('.number').val(i => i + 1));

个字符

相关问题