2011-06-01 129 views
8

我想用我所有的文本區域執行某些操作,但是使用$("textarea")選擇所有文本區域都不行。這裏就是我想在僞代碼做:用Javascript(jQuery)遍歷所有Textareas

for each textarea do 
    alert(textarea.val) 

以我爲例,我需要做的單詞替換在我所有的文字區域的,所以我想用迭代這樣做將是一個很大清潔,但我不知道如何去做。

這是我目前做的,這是非常繁瑣:

var txtcode = $("#txt_banner1").text().replace("AFFURL",producturl); 
$("#txt_banner1").text(txtcode); 

var txtcode = $("#txt_banner2").text().replace("AFFURL",producturl); 
$("#txt_banner2").text(txtcode); 

...等等等等....

謝謝!

回答

19
$(function(){ 
    $("textarea").each(function(){ 
     this.value = this.value.replace("AFFURL",producturl); 
    }); 
}); 

用於獲取textarea的價值,而不是$(本).VAL()或的.text()廢話看到一個working demo

+0

+1定期FREAKING JAVASCRIPT。 – 2011-06-01 13:17:47

+0

接受這一個是因爲常規的JavaScript,這使得更好的可讀性。謝謝! :) – Jeff 2011-06-01 13:42:54

+0

我得到ReferenceError:textarea沒有定義,當我嘗試從我的代碼中執行$(「textarea」)。我在我的$(document).ready函數中執行此操作,這是不正確的嗎? – crusarovid 2017-12-29 16:58:59

6

您可以使用.each遍歷所有textarea元素,並通過jQuery執行您需要的操作。

Live Demo

$('textarea').each(
    function(){ 
     alert($(this).val()); 
    } 
); 

Reference

3

,而不是使用ID 下面做

$("textarea").each (function() { 

// whatever u want 
}); 
1

http://jsfiddle.net/PKenB/

//alternative 1 
$(function() { 
    $('textarea').each(function() { 
     alert($(this).text()) 
    }) 
}) 

//alternative 2 only those who has specific class 
$(function() { 
    $('textarea.myTextArea').each(function() { 
     alert($(this).text()) 
    }) 
}) 

//alternative 3, handpicked textareas  
$(function() { 
    var handPicked = ['#2', '.myTextArea'] 
    for (x = 0; x < handPicked.length; x++) { 
     alert($(handPicked[x]).text()) 
    } 
})