jquery每个只更改第一个元素

时间:2014-01-11 20:18:32

标签: jquery html each

我试图让输入改变那里的值取决于点击这里是jsfiddle http://jsfiddle.net/x3fgg/

所以我有不同的输入,如此

<li>
    <input type="text" class="mainfinput" value="something" readonly>
    <input type="hidden" class="ftext" value="something else">
    <input type="hidden" class="fbbcode" value="something else">
    <input type="hidden" class="fhtml" value="something else">
</li>

所以我有主要输入,它会根据用户点击的内容改变价值。因此,如果他们点击'ftextbtn',那么所有主输入值都将使用'ftext'值。但目前它使用了所有其他li的第一个li值。我错了什么

这是js

$(document).on('click', '.ftextbtn' , function(e) {
    e.preventDefault();    
    $('.link_list li').each(function(){
        var main = $('.mainfinput');
        var ftext = main.siblings('.ftext').val();
        alert(ftext);
    });
});

2 个答案:

答案 0 :(得分:2)

您在每个内部执行的代码与每个代码无关。你永远不会使用$(this),所以每个循环都会一遍又一遍地完成确切的事情

$('.link_list li').each(function(){

    //to make use of the li each loop, you would need to do something like this
    var main = $(this).find('.mainfinput');
    var ftext = main.siblings('.ftext').val();
    alert(ftext);
});

Including FIDDLE i updated from OP to work with above suggestion

答案 1 :(得分:0)

作为stated in the documentation

  

获取匹配元素集中第一个元素的当前值或设置每个匹配元素的值。

main.siblings()将返回匹配元素的LIST,然后.val()将从该列表的FIRST中提取值。这意味着在.mainfinput的所有兄弟姐妹中,.val()只会获得.ftext的值,而不是其他任何内容。