2014-01-11 23 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

相關問題