2013-11-13 2 views
0

Im создание приложения с помощью Phonegap. Он берет xml из rss-канала и создает html из него для подачи новостей. Проблема заключается в том, что пути изображения относительны. Мне нужно заменить относительный путь полным путем. Теги изображений отображаются внутри тега xml описания. Я получаю содержание описания, как это:Замена источника изображения с помощью JQuery

$(xml).find('item').each(function (index) { 

    description = $(this).find('description').text(); 
    console.log('description'); 

Выход консоли:

<p>Senior Rugby</p> 
<p>CBC v CBS</p> 
<p> 
    <span class="mjwideimg"><img width="300" height="247" src="/images/latestnews2/Resized/logo_300x247.jpg" alt="logo" /> 
    </span> 
</p> 

тогда я пытаюсь заменить путь с полным путем. Я:

$(description).find('img:first').attr('src', 'http://www.domain.com/img/test.png'); 

А затем получить новый HTML полный путь:

description = $(description).html(); 
console.log(description); 

Однако, это только вывод:

Senior Rugby 

со всем остальным отбрасываются. Что я делаю не так?

+1

Вы могли бы разместить это как демонстрационную версию в jsFiddle pls? –

ответ

0

Когда вы находите изображение, описание все еще установлено на $(this).find('description').text();?

Если это так, объект JQuery не указывает на элемент HTML, а представляет собой строку текста, находящуюся внутри этого элемента.

Попробуйте заменить описание с $(this).find('description');

0

В первом console.log вы делаете

description = $(this).find('description').text(); 
console.log('description'); 

здесь вы войти в XML узел не переменную, закодированный.

И в другом, вы сделали что-то другое (на этот раз, когда вы сделали это для переменной)

description = $(description).html(); 
console.log(description); 

Другое дело использовать .prop() вместо .attr()

$(description).find('img:first').prop('src', 'http://www.domain.com/img/test.png'); 
0

В конце концов, я сделал это:

description = $(this).find('description').text(); 

$(description).find('img').each(function(i, obj){ 

    src = $(obj).attr('src'); 

    //check if not full path 
    if(src.indexOf('http') === -1){ 
    //therefore its a relative path 
    description = description.replace(src,"http://domain.com"+src); 
    } 
}); 
Смежные вопросы