2012-02-08 2 views
0

Я пытаюсь просто воспроизвести то, что есть на сайте Jquery для метода .get:метод прибудете не возвращает результаты

<!DOCTYPE html> 
<html> 
<head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
</head> 
<body> 
    <ul> 
     <li id="foo">foo</li> 
     <li id="bar">bar</li> 
    </ul> 

<script type="text/javascript"> 
    alert($('li').get()); 
</script> 
</body> 
</html> 

Она должна возвращать

[<li id="foo">, <li id="bar">] 

Но я получаю is [object HTMLLIElement],[object HTMLLIElement]

Кто-нибудь знает, что я могу делать неправильно здесь?

+0

Попробуйте мой обновленный ответ. Я думал, тебе нужно что-то еще. – gdoron

ответ

0

Простой, выберите ul элемент и отображать его содержимое с html функции:

alert($('ul').html()); 

htmldocs:

Описание: Получить HTML содержимое первого элемента в наборе соответствующих элементы.

+0

Это будет просто выводить один элемент, но в том же формате. –

+0

Да, просто попробовал и получил этот объект HTMLLIElement], поэтому проблема все еще остается. – Allen

+0

@ Allen.Now он должен работать – gdoron

0

Все в порядке: Метод

.get() дает нам доступ к DOM узлов, лежащих в основе каждого объект JQuery.

Get возвращает элементы DOM, удерживаемые переменной jQuery. И когда вы выводите DomElements, они становятся формой «HTMLLIElement».

+0

так есть способ воспроизвести то, что у них есть здесь: hmm .. http://api.jquery.com/get/ – Allen

+0

Это то, что вы получаете. Его просто выходной формат, который отличается. Фактически, если вы сохраните свой результат и затем проверите его свойство длины, оно будет равно 2. – knub

+0

Хорошо .. ответ: var j = ($ ('li'). Get (0)); alert (j.innerHTML); – Allen

0

Но это то, что .get делает! Он будет извлекать элементы HTML DOM, соответствующие селектору. Если вы хотите объекты jQuery, вы должны использовать только $('li').

0

Вы не обязательно делаете что-то неправильно.

Что вы получаете фактический результат вызова toString (который alert будет делать для вас) на массив с 2 <li> объектов DOM в нем:

[object HTMLLIElement],[object HTMLLIElement] 

Однако то, что упоминается в API Documents ISN «т строковое представление массива, но подразумевается как описание текущего состояния массива в памяти:

[<li id="foo">, <li id="bar">] 

это предназначалось как более короткий способ сказать что-то вроде этого:

Результатом является массив с объектами DOM 2, которые представляют собой <li id="foo"> и <li id="bar"> элементы, соответственно.


Теперь, если вы действительно хотите, чтобы получить разметку в боевой готовности, вы должны будете get the outer HTML элементов.Тогда попробуйте:

alert($('li').map(function() { return $(this).outerHTML(); }).get()); 

Пример: http://jsfiddle.net/cmpwM/

+0

Вы можете просто выбрать элемент 'ul' и использовать функцию' html'. см. мой ответ. – gdoron

+0

@ gdoron Да и нет. Это может быть все, что действительно необходимо, но в результате получается только одна строка, а не массив строк. –

Смежные вопросы