0

我有这个代码片段:

    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()

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

4

3 回答 3

2

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

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

概念证明

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

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

这是因为,使用上面编写的方法(您在评论中说有效),元素[Object object]中的输出很多。.content

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

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

您在其他地方的评论中说,您需要处理一组“特定的”span元素,我假设这就是您使用 的原因for() {...},您可以改为使用:gt()

var $ispan = $("span:gt(4)");
$ispan.text(function (i) {
    return 'span ' + (i + 6);
}).appendTo('.content').before('<br />');

JS 小提琴演示

参考:

于 2013-03-20T08:06:00.357 回答
0

尝试:

var $ispan = $('span');
$ispan.each(function(index) {
    if(index > 3)
       $('.content').append('<br>' + $(this).text());
};
于 2013-03-20T08:07:07.713 回答
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());
    };
于 2013-03-20T08:10:10.043 回答