jQuery: 如何从变量中的特定元素中提取文本

jQuery: How to extract text from specific element within variable

我有一个包含简单 HTML 的变量,如下例所示 - 变量的内容是通过 Ajax 动态生成的:

var errors = "<span id='id1'>Value 1</span><span id='id2'>Value 2</span><span id='id3'>Value 3</span><span id='id4'>Value 4</span><span id='id5'>Value 5</span>";

如何通过此变量中的 ID 获取特定元素的文本,例如ID='id3' 的跨度文本?这里的结果应该是“Value 3”。

我尝试了以下操作,但 我得到的结果总是空字符串或 "[object Object]":

  1. $(errors).filter('#id3')
  2. $(errors).filter('#id3').text()
  3. $(errors).find('#id3').text()

更新:
在阅读了关于这个的评论和答案之后,我将我的代码分开了,看来问题出在 Ajax 的成功部分,其中 data 包含我在上面的示例中显示的内容,但它似乎是未存储在变量“errors”中。 (如果我对变量进行硬编码,那么它可以与 .filter 一起使用。)

var errors = '';
$.ajax({        
    type: "post",   
    url: "ajax.php",
    cache: "false",
    data: {
        node: 'fetchErrors',
        selectedLang: selectedLang
    },
    success: function(data){
        errors = data;
    }
});

有人可以帮我解决这个问题吗?

非常感谢, 麦克

你走在正确的轨道上......

var errors = "<span id='id1'>Value 1</span><span id='id2'>Value 2</span><span id='id3'>Value 3</span><span id='id4'>Value 4</span><span id='id5'>Value 5</span>";
var obj = $(errors);
var filter = $(obj).filter('#id3'); 
console.log(filter.text());

jsfiddle: fiddle

这样就可以了:

$(errors).filter("#id3").text()

尝试将 async: false 添加到 ajax 属性。

这对我有用 (fiddle)。

success: function(data){
    var result = $(data).filter("#id3").text();
}