我试图让输入改变那里的值取决于点击这里是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);
});
});
答案 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
的值,而不是其他任何内容。