Оберните каждое вхождение текста «рупий».с - PullRequest
3 голосов
/ 19 сентября 2011

У меня есть валюта "рупий". происходит в нескольких местах на моем сайте. Я хочу обернуть каждое вхождение текста <span class="WebRupee">., но если он уже обернут в <span class="WebRupee">, его следует игнорировать.

Я не могу использовать $('*:contains("Rs.")').wrap("<span class=\"WebRupee\");, потому что это оборачивает HTML вокруг узла, который содержит Rs. но не вокруг одного текста. И по той же причине я не могу использовать .wrapInner();

Опять любая помощь будет принята с благодарностью!

РЕДАКТИРОВАТЬ: javascript, представленный на сайте webrupee, не работает на моем сайте (не знаю, почему). Так что об этом не может быть и речи. И поэтому я подумал о написании пользовательского JavaScript. Просто не знаю, как я мог подойти к этому.

РЕДАКТИРОВАТЬ (2): мыслить вслух - хм, есть ли способ добавить html в indexOf ("Rs.") .. или подобный подход

Ответы [ 3 ]

1 голос
/ 19 сентября 2011

Во-первых, то, что вы пытаетесь сделать, это грязный хак.

Вы должны исправить это в исходном коде, каким бы он ни был (например, PHP-бэкэнд, Ruby-бэкэнд, обычный HTML и т. Д.).

См. Этот пример, работающий на http://jsfiddle.net/8jXLw/

Я сделал много предположений и упрощений, ваши регулярные выражения должны быть более полными.

var spanit = function(item) {
    var $item = jQuery(item);
    var regexp = /\d+ Rs\./;
    var text = $item.text();
    if (!regexp.test(text)) {
        return;
    }
    if ($item.has(".WebRupee").length) {
        return;
    }
    var new_text = text.replace(" Rs."," <span class='WebRupee'>Rs.</span>");
    $item.html(new_text);
};

jQuery(function() {
    $("p.test").each(function() {
        spanit(this);
    });
});
1 голос
/ 19 сентября 2011

Использовать http://cdn.webrupee.com/js файл.это работает нормально.Я использовал для одного сайта.Если вы хотите скачать и настроить немного .. спасибо ..

0 голосов
/ 19 сентября 2011

очень неэффективное решение

    var replaced = $("body").html().replace('Rs.','<span class="WebRupee">Rs.</span>');
    $('body').html(replaced);
    var replaced = $("body").html().replace('<span class="WebRupee"><span class="WebRupee">Rs.</span></span>','<span class="WebRupee">Rs.</span>');
    $('body').html(replaced);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...