我在 jQuery 中使用 $.get 请求一个完整页面,并希望获取特定元素的内容。另外,事情是这样的:
$.get( "/page.html").done(function( data ) {
// get textArea.
});
我想得到:
document.getElementByTagName("textArea")[0].value;
但我不能对数据执行 getElementByTagName 那么最好的方法是什么?
我在 jQuery 中使用 $.get 请求一个完整页面,并希望获取特定元素的内容。另外,事情是这样的:
$.get( "/page.html").done(function( data ) {
// get textArea.
});
我想得到:
document.getElementByTagName("textArea")[0].value;
但我不能对数据执行 getElementByTagName 那么最好的方法是什么?
我尝试使用 find 但这不起作用,所以我最终使用了 filter 并返回了我需要的 textArea 的值:
$.get( "/page.html").done(function( data ) {
var textArea = $(data).filter("textarea")[0].innerText;
});
既然你无论如何都在使用 jQuery……你试过$(data).find('textarea').first().val()
了吗?
这是假设这data
是一个片段。如果不是,您将需要先将其包装在 adiv
或其他东西中。
你可以试试 jquery load() 函数。
它将从远程服务器加载并将文档插入所选元素。
它还允许我们指定要插入的远程文档的一部分。
假设您的远程 textarea 的 id 是“remote”,并且您想将远程内容提取到 id 为“local”的 textarea
var result="";
$("#local").load("/page.html #remote", function(response, status, xhr){
result=$(this).find("#remote").val();
});
我不确定您是否要获取远程文本区域并插入到当前文档的元素中。
如果您只想获取远程文本区域的值,您可以隐藏加载函数调用元素
希望这对你有帮助。
这与您正在做的事情略有不同,但我认为它可以提供帮助。您可以调用.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();
})
//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/