разбор html-строки с помощью jquery


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

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

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

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

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

4 60

4 ответа:

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

$(data)

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

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

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

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

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

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 и src изображения в #imgSrc.

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

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

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