.html()
Функция селектора классов ($('.class').html()
) применяется только к первому элементу, который соответствует ему. Я хотел бы получить значение всех элементов с классом .class
.
JQuery.html() всех согласованных элементов
Ответ 1
Вы выбираете все элементы с классом .class
, но для сбора всего содержимого html вам нужно пройти через все из них:
var fullHtml;
$('.class').each(function() {
fullHtml += $(this).html();
});
поиск элементов внутри содержимого внутри него:
$('.class:contains("My Something to search")').each(function() {
// do somethign with that
});
Ответ 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())