Подтвердить что ты не робот

JQuery.html() всех согласованных элементов

.html() Функция селектора классов ($('.class').html()) применяется только к первому элементу, который соответствует ему. Я хотел бы получить значение всех элементов с классом .class.

4b9b3361

Ответ 1

Вы выбираете все элементы с классом .class, но для сбора всего содержимого html вам нужно пройти через все из них:

var fullHtml;

$('.class').each(function() {
   fullHtml += $(this).html();
});

поиск элементов внутри содержимого внутри него:

$('.class:contains("My Something to search")').each(function() {
   // do somethign with that
});

Код: http://jsfiddle.net/CC2rL/1/

Ответ 2

Я предпочитаю один вкладыш:

var fullHtml = $( '<div/>' ).append( $('.class').clone() ).html();

Ответ 3

Вы можете сопоставить html() каждого элемента в отфильтрованном выборе jQuery с массивом и затем присоединиться к результату:

           //Make selection
var html = $('.class')
          //Filter the selection, returning only those whose HTML contains string 
          .filter(function(){
              return this.innerHTML.indexOf("String to search for") > -1
          })
          //Map innerHTML to jQuery object
          .map(function(){ return this.innerHTML; })
          //Convert jQuery object to array
          .get()
          //Join strings together on an empty string
          .join("");

Документация:

Ответ 4

Samich Ответ правильный. Может быть, с массивом html лучше!

var fullHtml = [];

$('.class').each(function() {
   fullHtml.push( $(this).html() );
});

Ответ 5

Если вам требуются все элементы (с внешним HTML также), есть еще один вопрос с соответствующими ответами здесь: Получить HTML-код выбранного элемента

A простое решение было предоставлено @Volomike:

var myItems = $('.wrapper .items');
var itemsHtml = '';

// We need to clone first, so that we don’t modify the original item
// Thin we wrap the clone, so we can get the element’s outer HTML
myItems.each(function() {
    itemsHtml += $(this).clone().wrap('<p>').parent().html();
});

console.log( 'All items HTML', itemsHtml );

Четное более простое решение @Eric Hu. Обратите внимание, что не все браузеры поддерживают outerHTML:

var myItems = $('.wrapper .items');
var itemsHtml = '';

// vanilla JavaScript to the rescue
myItems.each(function() {
    itemsHtml += this.outerHTML;
});

console.log( 'All items HTML', itemsHtml );

Я отправляю ссылку на другой ответ и то, что сработало для меня, потому что при поиске я приехал сюда первым.

Ответ 6

Если вы превратите свой объект jQuery в Array, вы можете reduce над ним.

const fullHtml = $('.class')
   .toArray()
   .reduce((result, el) => result.concat($(el).html()), '')

Ответ 7

$('.class').toArray().map((v) => $(v).html())