【问题标题】:jQuery: How to extract text from specific element within variablejQuery:如何从变量中的特定元素中提取文本
【发布时间】:2015-07-04 08:37:51
【问题描述】:

我有一个包含简单 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' 的 span 文本?这里的结果应该是“Value 3”。

我尝试了以下方法,但我得到的结果始终是空字符串或[object Object]”:

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

更新:
在阅读完 cmets 和答案后,我将代码拆分,似乎问题在于 Ajax 的成功部分,其中 data 包含我在上面示例中显示的内容,但似乎它没有存储在变量中“errors”。 (如果我对变量进行硬编码,那么它可以与 .filter 一起使用。)

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

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

提前非常感谢, 迈克

【问题讨论】:

  • 我在 Firefox 中尝试了你的第二个答案 ($(errors).filter('#id3').text()) 工作正常。
  • 同意@JohnDaniel ...在 chrome 中工作正常。
  • @JohnDaniel:谢谢。我现在也可以确认这一点,并且刚刚更新了我的帖子。
  • @keewee279 你可能有异步问题。将 async: false 附加到您的 ajax 对象。
  • @keewee279,你在成功功能命中之前进行过滤。

标签: jquery variables filter find


【解决方案1】:

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

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

【讨论】:

  • 非常感谢!我试过了,但它也为我返回了一个空字符串。
  • 更新:感谢您添加小提琴。我可以确认这对我也有效,并且刚刚更新了我的帖子。
【解决方案2】:

这对我有用 (fiddle)。

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

【讨论】:

  • 谢谢。我会接受这个,因为它为我指明了正确的方向。然而,我的问题在于 Ajax,因为 jQuery 在获得 Ajax 结果之前继续前进,因此将成功部分中的所有内容都修复了它,然后这种方法可以正常工作。
  • @keewee 是的 ajax 是 asynchronous,这意味着函数在结果(在您的情况下为 data)来自服务器之前完成。
【解决方案3】:

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

【讨论】:

  • 谢谢 - 你能解释一下这是做什么的吗?
【解决方案4】:

这样就可以了:

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

【讨论】:

  • 谢谢。我试过这个(见上文),但在我的情况下它不起作用。
猜你喜欢
  • 2017-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多