从给定的HTML中,我试图提取pText
数组,以便最终得到两个<p>
项(在本例中),我可以从中提取两个文本字符串{ {1}}和"link test1"
,并为每个人弹出提醒。为什么以下脚本不起作用?
HTML:
"link test2"
使用Javascript:
<div>
<p><a href='/'>link</a> test1</p>
<p><a href='/'>link</a> test2</p>
</div>
答案 0 :(得分:7)
由于你正在使用jQuery,如果你想使用.text()
方法,你必须提取一个jQuery对象并使用.eq(i)
而不是[i]
,这将返回一个普通元素
这是正确的代码:
var pText = $('div').find('p');
for (i = 0; i < pText.length; i++) {
alert(pText.eq(i).text());
}
此外,您可以使用.each()
方法(而不是for
循环)简化代码,该方法为jQuery集合的每个元素(pText
)调用给定函数。在我看来,这更容易,你走了:
var pText = $('div').find('p');
pText.each(function(i, el) {
alert($(el).text());
});
答案 1 :(得分:4)
text()
是jQuery对象的函数。
将您的元素包装在$(..)
alert($(pText[i]).text());
更好的方法是使用.each()
$('div').find('p').each(function(){
alert($(this).text());
});
答案 2 :(得分:0)
尝试使用alert(pText.eq(i).text());而不是警报(pText [i] .text());
jQuery代码将是
var pText = $('div').find('p');
for (i = 0; i < pText.length; i++) {
alert(pText.eq(i).text());
}
答案 3 :(得分:0)
$('#x').children('p').each(function() {
alert($(this).text()); // "this" is the current element in the loop
});