JQuery - создать список всех имен LI - PullRequest
3 голосов
/ 22 марта 2010

С учетом следующего блока HTML:

<ul id="taglist">
<li><a name="45" href="">Product 1</a></li>
<li><a name="1146" href="">Product 2</a></li>
<li><a name="13437" href="">Product 3</a></li>
<li><a name="51" href="">Product 4</a></li>
</ul>

Возможно ли для JQUERY вернуть STRING, одну переменную со значениями имени:

alert(tagliststring);

Будет оповещать: 45,1146,13437,51

Спасибо

Ответы [ 3 ]

7 голосов
/ 22 марта 2010

Вы можете использовать функцию each:

var names = [];
$('#taglist > li > a').each(function() {
    names.push(this.name);
});
var result = names.join(',');
alert(result);

Таким образом, names будет массивом, заполненным каждым отдельным именем, а result будет искомой строкой с разделителями-запятыми.

Для получения дополнительной информации см. Документацию jQuery .

Еще меньший способ сделать это - использовать функцию jQuery map:

var names = $('#taglist > li > a').map(function() { return this.name; }).get();
var result = names.join(',');

Первый пример, вероятно, будет легче читать и понимать людям.

5 голосов
/ 22 марта 2010

Использование $.map:

var names = $('#taglist > li > a').map(function() {
  return this.name;
}).get().join(',');
// names will contain the string: "45,1146,13437,51"

Метод $.map позволяет передавать каждый элемент в текущем сопоставленном наборе через функцию, создавая новый объект jQuery, содержащий возвращаемые значения.

После $.map я использую метод get, чтобы получить простой объект JavaScript Array, где я наконец могу вызвать метод join, чтобы сгенерировать строку.

Проверьте приведенный выше пример здесь .

0 голосов
/ 22 марта 2010
var output; 
$('li a').each( function() { output += $(this).attr('name') + ','; });

Обратите внимание, это выдаст дополнительно , в конце.

...