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]
":
$(errors).filter('#id3')
$(errors).filter('#id3').text()
$(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();
}
我有一个包含简单 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]
":
$(errors).filter('#id3')
$(errors).filter('#id3').text()
$(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();
}