2014-12-02 5 views
1

Я пытаюсь использовать jQuery для изменения HTML-шаблона.Как изменить строку html с помощью jQuery

Например:

var d = '<div class="a"><div class="b"></div><div class="c"></div></div>'; 

var html = $(d).find(".b").html("BBBBB"); 

console.log(d); // I want to get the new html 

В выше, я хочу, чтобы получить

'<div class="a"><div class="b">BBBBB</div><div class="c"></div></div>'

Как можно реализовать случай Пожалуйста, предложите?.

+0

Попробуйте 'console.log (html)' – Efog

+0

почему бы не использовать напрямую '$ ('.b'). Html (" BBBBB ")' – Aditya

+0

'd' - это переменная, а не элемент DOM. Поэтому на нем не существует метода .html(). Чего вы на самом деле хотите достичь? – Imad

ответ

8

Так вот код:

var d = '<div class="a"><div class="b"></div><div class="c"></div></div>'; 

var html = $(d).find(".b").html("BBBBB").end()[0].outerHTML; 

console.log(html); 

Примечание ключ использовать .end(), который будет палить контекст <div class="b"> созданного .find() операции и вернуть вам только $(d), который затем позволяет получить полный HTML, используя .outerHTML на необработанном узле DOM.

+1

Это правильный ответ и, безусловно, лучший способ его достижения, +1 – Fizzix

0
var d = '<div class="a"><div class="b"></div><div class="c"></div></div>'; 

$('.a').find(".b").html("BBBBB"); 
var newD = $('.a').parent().html(); 

console.log(newD); 

Вы пишете элемент DOM, а не переменную. Вам понадобится снова получить измененный элемент DOM.