0

我在 jQuery 中使用 $.get 请求一个完整页面,并希望获取特定元素的内容。另外,事情是这样的:

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

我想得到:

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

但我不能对数据执行 getElementByTagName 那么最好的方法是什么?

4

5 回答 5

1

我尝试使用 find 但这不起作用,所以我最终使用了 filter 并返回了我需要的 textArea 的值:

$.get( "/page.html").done(function( data ) {
   var textArea = $(data).filter("textarea")[0].innerText;
});
于 2013-10-14T17:59:27.043 回答
0

既然你无论如何都在使用 jQuery……你试过$(data).find('textarea').first().val()了吗?

这是假设这data是一个片段。如果不是,您将需要先将其包装在 adiv或其他东西中。

于 2013-10-14T08:13:31.347 回答
0

你可以试试 jquery load() 函数。

它将从远程服务器加载并将文档插入所选元素。

它还允许我们指定要插入的远程文档的一部分。

假设您的远程 textarea 的 id 是“remote”,并且您想将远程内容提取到 id 为“local”的 textarea

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

我不确定您是否要获取远程文本区域并插入到当前文档的元素中。

如果您只想获取远程文本区域的值,您可以隐藏加载函数调用元素

希望这对你有帮助。

于 2013-10-14T07:21:59.540 回答
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();
})
于 2013-10-14T07:25:38.813 回答
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/

于 2013-10-14T07:49:56.297 回答