jQuery数组元素N#39;字符串

时间:2015-04-18 22:00:32

标签: javascript jquery html

从给定的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>

4 个答案:

答案 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
});

JSFiddle