2013-10-14 196 views
0

我在jQuery中請求使用$ .get的完整頁面,並希望獲取特定元素的內容。另外,這裏的東西怎麼看:

$.get("/page.html").done(function(data) { 
    // get textArea. 
}); 

,我想:

document.getElementByTagName("textArea")[0].value; 

,但我不能對數據確實getElementByTagName那麼什麼是做到這一點的最好方法是什麼?

+0

你到底想幹什麼?你只需要這個價值?如果是這樣,你不能讓服務器返回JSON中的東西嗎? – Matijs

回答

1

我試圖用找到,但沒有工作,所以我結束了使用過濾器和返回我需要textarea的值:

$.get("/page.html").done(function(data) { 
    var textArea = $(data).filter("textarea")[0].innerText; 
}); 
0

你可以試試jquery load()函數。

它將從遠程服務器加載並將文檔插入選定的元素。

它還允許我們指定要插入的遠程文檔的一部分。

假設遠程的textarea的ID是「遠程」,你想獲取遠程內容到一個文本,如果你想獲得遠程textarea的哪個ID是「本地」

var result=""; 
$("#local").load("/page.html #remote", function(response, status, xhr){ 
    result=$(this).find("#remote").val(); 
}); 

我不知道並插入到當前文檔的元素中。

如果你只是想獲得遠程textarea的價值,你可以只隱藏加載函數調用元素

希望這是對你有幫助。

0

它與你所做的略有不同,但我認爲它可以提供幫助。您可以撥打.load代替get和整個頁面添加到一個div說<div id="mydiv"></div>

var value; 
$('#mydiv').load('xyz.html',function(){value=$('#mydiv').find('#mytextarea').val()}) 

但是如果你不想mydiv顯示一旦主網頁被加載,你可以在開始時隱藏,如果你也別在你的頁面上不需要這個div,你可以在完成上述任務後刪除它。

$(document).ready(function(){ 
    $('#mydiv').hide(); 
    var value; 
    $('#mydiv').load('xyz.html',function(){value=$('#mydiv').find('#mytextarea').val()}); 

$('#mydiv').remove(); 
}) 
+0

這會消耗性能,並且會影響數據加載的方式,因爲每次請求數據時,都會將其加載到頁面中,隱藏,處理它,然後刪除它,這是一個比它更長的過程應該是吧? – user220755

+0

@ user220755來獲取html文件的數據,就像在你的textarea的問題值中從服務器注入該文件一樣,需要到當前頁面的DOM結構中,爲此目的'load'是最合適的選擇。我不是web開發專家,但我認爲與完成任務相比,性能成本非常低。請看看這個鏈接http://stackoverflow.com/questions/3870086/difference-between-ajax-and-get-and-load – UDB

0

// STR代表page.html中

var str = 'gibberish gibberish <textarea class="test">hello world</textarea>gibberish'; 

$.each($.parseHTML(str), function(i, el) { 
    if(el.firstChild) console.log(el.firstChild); 
}); 

小提琴:http://jsfiddle.net/ez666/7DKDk/

+0

這確實返回了textarea文本,但是,它也返回了其他一些東西。比如頁面的樣式,例如... – user220755

0

由於您使用jQuery反正...你試圖$(data).find('textarea').first().val()了嗎?

這是假定data是一個片段。如果不是這樣,你會想要將它包裝在div或其他東西中。

+0

這實際上並沒有工作,它返回undefined :( – user220755

相關問題