Редактировать HTML с возвращенным содержимым jQuery html () - PullRequest
0 голосов
/ 17 августа 2010

Я хочу отредактировать некоторый HTML, полученный из сохраненной мной переменной. как:

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

Также пробовал

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

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

1 Ответ

1 голос
/ 17 августа 2010

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

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

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

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


РЕДАКТИРОВАТЬ: На основе комментариев OP не хочет изменять оригинал. Таким образом, .clone() может использоваться. Ответ выше был отредактирован для отражения изменений.

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


РЕДАКТИРОВАТЬ: Причина, по которой $('input',testhtml) и $(testhtml).find('input') дают одинаковый результат, в том, что они на самом деле одно и то же.

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

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

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

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