разобрать строку html с помощью jquery - PullRequest
60 голосов
/ 01 апреля 2009

У меня есть HTML-строка из источника, загруженного Ajax. Я хотел бы получить некоторые атрибуты объекта (изображения) в этой строке, прежде чем помещать HTML-код в документ.

У меня есть что-то вроде:

$.ajax({  
        url: uri+'?js',  
        success: function(data) { 
            var htmlCode = $(data).html();  

            $('#otherObject').html(data);
        }  
    });

Как я могу получить атрибуты (например, src) из этой строки HTML?

Ответы [ 4 ]

107 голосов
/ 01 апреля 2009

Я не уверен на 100%, но не буду

$(data)

создать объект jquery с DOM для этих данных, нигде не подключенный? Или, если он уже проанализирован как DOM, вы можете просто использовать $ ("# myImg", data) или любой другой селектор, соответствующий вашим потребностям.

EDIT
Перечитывая ваш вопрос, кажется, что ваши «данные» уже являются DOM, что означает, что вы можете просто пойти (если в DOM есть только img, в противном случае вам потребуется более точный селектор)

$("img", data).attr ("src")

если вы хотите получить доступ к атрибуту src. Если ваши данные просто текстовые, то, вероятно, сработает

$("img", $(data)).attr ("src")
2 голосов
/ 02 июля 2009

Marvins .-

Попытка:

$.ajax({  
        url: uri+'?js',  
        success: function(data) {  
                var imgAttr = $("img", data).attr('src'); 
                var htmlCode = $(data).html();
                $('#imgSrc').html(imgAttr);
                $('#fullHtmlOutput').html(htmlCode);
        }  
    });

Это должно загрузить весь блок html из данных в #fullHtmlOutput и источник изображения в # imgSrc.

1 голос
/ 31 марта 2012

Стоит отметить одну вещь - поскольку у меня была именно эта проблема сегодня, в зависимости от вашего HTML jQuery может анализировать или не анализировать ее так хорошо. jQuery не будет анализировать мой HTML в правильном DOM - на меньших XML-совместимых файлах он работал нормально, но мой HTML-код (который будет отображаться на странице) не будет анализироваться при возврате в обратный вызов Ajax.

В конце я просто вручную нашел в строке нужный мне тег, не идеальный, но сработал.

1 голос
/ 12 июля 2009

просто добавьте контейнерный элемент перед вашим элементом img, чтобы быть уверенным, что ваш вставленный элемент не первый, протестированный в ie, ff

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