2013-03-20 105 views
0

的我有這樣的代碼片段:價值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() 

爲什麼不這樣做,應該怎麼做?

+0

開始;''用$( '跨')' – sdespont 2013-03-20 08:06:23

回答

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 />'); 

這是因爲,使用上面所寫的方法(您說的作品,在評論中),.content元素中的輸出很多[Object object]

上述替代發現在jQuery對象相關元件,設置其文本,其附加到.content元件然後插入一個<br />之前所附元件。

此外,您的原始選擇器應該被$('span')充分替換,而不是過於複雜的jQuery封裝的本機DOM選擇器。

你說,在其他地方的意見,你需要在一個span元素,我假設的'specific set的工作。這就是爲什麼你使用for() {...},你也可以使用:gt()

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

​​。

參考文獻:

+0

這是正常工作,謝謝:

試試吧你,將在8分鐘內回答。 – Difusio 2013-03-20 08:09:23

+0

非常歡迎,我很高興得到了幫助! =) – 2013-03-20 08:10:15

0

嘗試:

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

我有這個工作,但我需要操作一個特定的集合。 – Difusio 2013-03-20 08:09:44

+0

@Difusio,查看更新後的答案 – Anujith 2013-03-20 08:12:52

0

你編譯的JavaScript與jQuery。這不是必需的。只使用JavaScript或jQuery。這是最值得推薦的。 使用eq()查找元素,並使用0開始for()。通過更換`$(window.test.document.getElementsByTagName( 「跨度」))

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