Альтернатива jQuery each () - вопрос самообразования - PullRequest
1 голос
/ 31 августа 2011

Глядя на это

получить значение внутри тега с помощью jQuery .?

<span>
 <b>hi_1</b>
 <b>hi_2</b>
 <b>hi_3</b>
 <b>hi_4</b>
<span>

, где вопрос заключался в том, чтобы получить разделенную запятыми строку содержимого тега

решение - это толчок внутри каждого.

Есть ли более короткий (и, возможно, более быстрый) способ использования, например,

$("span b").text().join(",") что, конечно, не работает, так как text () не возвращает массив ...

UPDATE:

«отчет об ошибке» (запрос функции), опубликованный artyom, содержал этот довольно интересный фрагмент

var x = $("span b").map(function() {
  return $(this).text();
}).toArray().join(", "); 

, что похоже на решение BrokenGlass, но короче ...

http://jsfiddle.net/mplungjan/M42Qx/

Я предпочитаю Array один ...

Ответы [ 4 ]

3 голосов
/ 31 августа 2011

Это может быть обманом, но поскольку вне тегов <b> нет текста, вы можете просто использовать $('span').text(), чтобы получить внутренний текст <span> и работать с ним вместо этого ...

$.trim($('span').text()) // Trim newlines near <span> and </span> tags
 .replace(/\s+/g, ', '); // Replace all other whitespace between <b></b> with ,
1 голос
/ 31 августа 2011

Был отчет об ошибке о добавлении этой функции к методу text(), который был закрыт с разрешением worksforme после нескольких способов сделать это.

1 голос
/ 31 августа 2011

Вы можете использовать map () , но я сомневаюсь, что это будет быстрее, поскольку вам нужно преобразовать объект jQuery в массив и обратно в объект jQuery:

var results = $("b").get()
                    .map(function(e) { return $(e).text();})
                    .join(",");
alert(results);

jsFiddle link

0 голосов
/ 31 августа 2011

Единственный вариант, который мне пришёл в голову и гораздо менее впечатляющий, чем у @ BoltClock , - это использование filter():

var values = [];
$('b').filter(
    function(){
        return values.push($(this).text());
    });
alert(values);

Демонстрация JS Fiddle .

И это не сильно отличается от решения, использующего each(), поскольку оно более или менее делает то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...