2013-03-20 2 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

Начало заменой '$ (window.test.document.getElementsByTagName ("оболочка"));' 'от $ ('пролетных')' – sdespont

ответ

2

Квадратные скобки возвращают определенный объект DOM из объекта/коллекции jQuery, а не объекта 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 />перед прилагаемой элемент.

Кроме того, ваш исходный селектор должен быть надлежащим образом заменен на $('span'), а не на чрезмерно сложный встроенный селектор DOM, обернутый jQuery.

Вы говорите, в комментариях в другом месте, что вы должны работать на «specific set» из span элементов, которые я предполагаю, что именно поэтому вы используете for() {...}, вы могли бы использовать вместо :gt():

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

JS Fiddle demo.

Ссылки:

+0

Это правильно работает, спасибо вы, отметьте ответ за 8 минут. – Difusio

+0

Вы очень желанны, я рад помочь! =) –

0

Try:

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

У меня было это работает, но мне нужно работать с определенным набором. – Difusio

+0

@Difusio, см. Обновленный ответ – Anujith

0

Вы скомпилирован Javascript с JQuery. Это необязательно. Используйте только javascript или jQuery. Это рекомендуется. Используйте eq(), чтобы найти элементы, и запустите for() с помощью 0.

Попробуйте:

var ispan = $("span"); 
    for (var i = 0; i < ispan.length; i++) { 
     $('.content').append('<br>' + ispan.eq(i).text()); 
    }; 
Смежные вопросы