Jquery对象索引的值

时间:2013-03-20 08:04:07

标签: jquery

我有这段代码:

    var $ispan = $(window.test.document.getElementsByTagName("span"));
    for (var i=5; i<$ispan.size(); i++) {
        $('.content').append('<br>' + $ispan[i].text());
    };

所以$ ispan包含一组跨度。我试图将这些跨度的特定选择附加到我的身体上。

代码失败了
$ispan[i].text()

为什么这不起作用,应该怎么做?

3 个答案:

答案 0 :(得分:2)

方括号从jQuery对象/集合返回特定的DOM节点,而不是jQuery对象;失败的原因是本机DOM节点没有text()方法。所以,你应该使用:

$('.content').append('<br>' + $ispan.eq(i).text());

Proof of concept

请注意,在链接的“概念验证”中,我修改了追加元素的方法,将其切换为:

$ispan.eq(i).text('span ' + (i+1)).appendTo('.content').before('<br />');

这是因为,通过上面写的方法(您说工作,在评论中),[Object object]元素中的输出很多.content

上面的替代方法找到jQuery对象中的相关元素,设置其文本,将其附加到.content元素,然后在附加元素之前插入<br /> 。 / p>

此外,您的原始选择器应该被$('span')充分替换,而不是过于复杂的jQuery包装的本机DOM选择器。

您在其他地方的评论中说,您需要处理spanfor() {...}:gt()元素,我假设您使用的是var $ispan = $("span:gt(4)"); $ispan.text(function (i) { return 'span ' + (i + 6); }).appendTo('.content').before('<br />'); ,您可以而是使用{{1}}:

{{1}}

specific set

参考文献:

答案 1 :(得分:0)

尝试:

var $ispan = $('span');
$ispan.each(function(index) {
    if(index > 3)
       $('.content').append('<br>' + $(this).text());
};

答案 2 :(得分:0)

你用jQuery编译了javascript。这不是必需的。仅使用javascript或jQuery。最值得推荐的。 使用eq()查找元素,并使用0开始for()。

试一试:

var ispan = $("span");
    for (var i = 0; i < ispan.length; i++) {
        $('.content').append('<br>' + ispan.eq(i).text());
    };