Как заменить заполнитель на полную HTML-страницу с помощью Jquery? - PullRequest
3 голосов
/ 14 марта 2012

У меня есть демонстрационная страница HTML, которая содержит заполнитель "|| client ||". Например, используется на всей странице:

<img src="images/||_client_||/img1.jpg" />

или

<title>||_client_|| Demo</title>

и т. Д.

Я хочу глобально заменить держатель поля на соответствующий идентификатор клиента после загрузки страницы. Страница только для демонстрационных целей, поэтому я не хочу ничего настраивать на стороне сервера.

Я привязан к этому:

 $('div:jqmData(role="page")').on('pagebeforecreate', function() {  
  // replace ||_client_|| with some ID      
  });

Вопрос:
Есть ли метод Jquery для запуска через DOM и поиска всех экземпляров моего заполнителя и замены их, или мне нужно делать каждый вручную и искать все теги img, проверять src на наличие подстроки и заменять эту подстроку? Должен быть хороший путь?

Спасибо за помощь!

Ответы [ 5 ]

3 голосов
/ 14 марта 2012

Вы можете пролистать каждый <img /> объект на странице и просто выполнить поиск / замену.

$('div:jqmData(role="page")').on('pagebeforecreate', function() { 

    $('img').each(function(){
        var newVal = $(this).attr('src').replace('||_client_||', theClientId);
        $(this).attr('src', newVal);
    });

});

Вместо использования $('img'), однако, я бы предложил усовершенствовать селектор, чтобы циклически проходить только изображения в определенном div $('#theDiv img') или определенном классе $('img.placeholder'). Вариант класса, вероятно, лучший. Вам просто нужно добавить class="placeholder" к каждому изображению, которое вы хотите зациклить.

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

Зачем вам нужен jQuery?

document.body.innerHTML = document.body.innerHTML.replace(/\|\|_client_\|\|/g, 'your text here');

Для всей страницы:

var html = document.getElementsByTagName('html')[0];
html.innerHTML = html.innerHTML.replace(...);

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

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

Вот пример, который заменит все '|| client ||' с "replace_string" во всем документе.

<html>
    <head>
        <title>||_client_|| Demo</title>
    </head>
    <body>
        <h1>||_client_||</h1>
        <img src="images/||_client_||/img1.jpg" />       
    </body>
    <script type="text/javascript">
        document.documentElement.innerHTML = document.documentElement.innerHTML.split('||_client_||').join('replace_string');
    </script>
</html>
1 голос
/ 14 марта 2012

на самом деле вы можете сделать это так:

//getting the html dom as string
var myStr = $("body").html();
//use reguler expression to replace your placeholder
myStr = myStr.replace(/\|\|\_client\_\|\|/gi,"Fareed");
//return it back to the dom
$("body").html(myStr);

примечание: / gi для глобального и нечувствительного к регистру

0 голосов
/ 14 марта 2012

Вы можете преобразовать всю страницу в html, используя функцию .html (), затем заменить заполнитель и вернуть результат, используя .html (). Это, вероятно, будет не очень эффективным, но это может сработать для вас.

// Suppose we have a div with a test class: <div class="test">{PLACEHOLDER} title</div>
var div = $('.div')
var src = $(div).html()
src = src.replace('{PLACEHOLDER}', 'Test')
div.html(src)

// Your div now contains: <div class="test">Test title</div>

Удачи!

...