2014-01-11 24 views
0

我想有输入取决于点击此处更改有值的的jsfiddle http://jsfiddle.net/x3fgg/jQuery的每个仅改变第一个元素

所以我有不同的输入,像这样

<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'值。但是目前它与所有其他利用者一起使用第一李值。所以,我在做什么错

这里是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

你为什么不关闭的投入? – Cilan

+1

您的jQuery代码和选择器与HTML标记不匹配。请张贴实际的代码 – Sachin

+0

http://jsfiddle.net/x3fgg/ –

回答

2

您在每个代码中执行的代码与每个代码本身无关。你从来不会使用$(本),所以每一个循环是要在做确切的事情一次又一次

$('.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

+0

请不要使用警报 - 特别是不要在循环中。使用'console.log()'代替 – lukasgeiter

+0

你在开玩笑吗?我们显然是在这里调试,而console.log在很多不支持它的浏览器中抛出错误。更何况这是来自他的原始代码,我们是不是说他的要求是阻止和/或提醒用户? – erikrunia

+0

是的,但据我所知,只有旧的浏览器有'console.log()'的问题,我很确定这不是浏览器的兼容性。编辑:好吧,我明白了,尽管我不认为他需要在最终的网站 – lukasgeiter

0

由于stated in the documentation

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

main.siblings()将返回匹配元素的列表,然后.val()将从该列表中的第一次提取液的值。这意味着.mainfinput,.val()的所有兄弟姐妹将只获得.ftext的价值,而没有别的。

+0

那么我应该使用var ftext = $('。ftext。')。val(); ? –

+0

虽然这可能是真的,只有获得第一个列表(不知道你在做什么与兄弟姐妹)请查看我的答案,为什么你不找到正确的主要输入每个循环。 – erikrunia

相关问题