2010-08-17 2 views
0

Я хочу отредактировать некоторый HTML, который я получаю из сохраненного мной var. как:Редактировать HTML с возвращенным содержимым jQuery html()

var testhtml = $('.agenda-rename').html(); 
console.log($('input',testhtml).attr('name')); 

Также попытался

console.log($(testhtml).find('input').attr('name')); 

Но я получаю undefined? Я полагал, что это будет работать как $ .ajax, $ .get, $ .post? Как еще я могу это сделать?

ответ

1

Когда вы звоните .html(), вы получаете только контент, а не .agenda-rename. Поэтому, если input является прямым ребенком .agenda-rename, тогда .find() не сможет найти его.

Вероятно, лучше всего обойтись без .html() вызова:

var testhtml = $('.agenda-rename').clone(); // or .clone(true) 
console.log($('input',testhtml).attr('name')); 

Теперь у вас есть .agenda-rename элемент (ы), и вы будете иметь возможность искать элементы, вложенные в него/них.


EDIT: на основе комментариев, OP не хочет изменить оригинал. Таким образом, может использоваться .clone(). Ответ выше был отредактирован для отражения изменений.

Если события прилагаются, которые необходимо сохранить, вы используете .clone(true).


EDIT: Причина $('input',testhtml) и $(testhtml).find('input') дают тот же результат, что они на самом деле то же самое.

jQuery преобразует первую версию во вторую за кулисами. Таким образом, технически немного более эффективно использовать второе, чем первое.

Вот код, в котором jQuery делает коммутатор (после запуска нескольких тестов для определения того, что он был передан).

http://github.com/jquery/jquery/blob/master/src/core.js#L150

+0

Привычка это изменить $ ('Повестка дня переименования'), хотя? Я хочу сохранить это и не изменять. Я пытаюсь создать встроенные шаблоны в основном, которые я клонирую, модифицирую, а затем показываю в этом модальном интерфейсе. –

+0

@Oscar - Если вы не хотите его изменять, вам нужно будет '.clone()' it. Если есть прикрепленные события, которые вы хотите сохранить, вызовите '.clone (true)'. Я обновлю. – user113716

+0

@patrick dw: Вы правы, я думаю, удалены :) – Sarfraz