javascript
  • jquery
  • jquery-plugins
  • 2012-04-25 3 views 0 likes 
    0

    Я хочу создать текстовый шаблон и установить в нем заполнители и заполнить эти заполнители и использовать его на моей странице? как ..Как использовать заполнители в jQuery?

    var temp = '<div class="persons">'; 
    temp += '<p> <span class="firstname">First Name :</span> <span> [firstname]</span> </p>'; 
    temp += '<p> <span class="lastname">Last Name :</span> <span> [lastname]</span> </p>'; 
    temp += '<p> <span class="tel">Telephone :</span> <span> [tel]</span> </p>'; 
    temp += '</div>'; 
    

    и изменить [firstname], [lastname], [tel] со своими значениями и показать в странице? или любая другая идея?

    +1

    Что ты пробовал? Кроме того, вы должны взглянуть на существующие механизмы шаблонов JS. –

    +0

    поясните пожалуйста. – AmirHossein

    +1

    Используйте тип функции sprintf/format: см. Здесь http://stackoverflow.com/questions/610406/javascript-equivalent-to-printf-string-format/4673436#4673436 –

    ответ

    2

    Вы попробовали .replace()?

    http://jsfiddle.net/KL9kz/

    +0

    Спасибо lot ;-) – AmirHossein

    2

    Вы можете просто заменить их.

    temp.replace("[firstname]", "fred").replace("[lastname]", "smith").replace("[tel]", "123456789");

    Не уверен, что вы используете шаблоны jQuery или нет.

    +0

    не работает! Я использую jQuery 1.71 – AmirHossein

    3

    Быстрый & грязный шаблон JS двигатель:

    // Create a matching object for each of your replacement 
    var matches = { 
        "[firstname]": "fred", 
        "[lastname]": "smith", 
        "[tel]": "123456789" 
    } 
    
    // Loop through the keys of the object 
    Object.keys(matches).forEach(function(key) { 
        // Replace every key with its value 
        temp = temp.replace(key, matches[ key ]) 
    }) 
    
    +1

    Мне очень нравится 'Object.keys()'. Раньше не знал об этом. Однако для того, чтобы иметь влияние, вы должны сохранить результат из 'replace()', поскольку он не работает на самом объекте. См. Здесь: http://jsfiddle.net/6vxKB/1/ – yoshi

    +1

    Ой, мой плохой, я редактирую для рабочего решения :). Имейте в виду «Object.keys», поскольку это не кросс-браузер, хотя shimming это вопрос [нескольких строк] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys) (то же самое для 'forEach'). –

    1

    Попробуйте что-то вроде этого, очень простой

    function replaceall(tpl, o, _p, p_) { 
        var pre = _p || '%', 
         post = p_ || '%', 
         reg = new RegExp(pre + '([A-z0-9]*)' + post, 'g'), 
         str; 
        return tpl.replace(reg, function (str, $1) { 
         return o[$1]; 
        }); 
    }; 
    var temp = '<div class="persons">'+ 
         '<p> <span class="firstname">First Name :</span> <span> [firstname]</span> </p>'+ 
         '<p> <span class="lastname">Last Name :</span> <span> [lastname]</span> </p>'+ 
         '<p> <span class="tel">Telephone :</span> <span> [tel]</span> </p>'+ 
        '</div>', 
        data = { 
         'firstname':'Fede', 
         'lastname':'Ghe', 
         'tel' : '+00 012 3456789' 
        }; 
    alert(replaceall(temp, data, '\\\[', '\\\]')); 
    

    быть cafeful, чтобы избежать PLACEHOLDERS границы и настроить внутренний регулярному_выражению при необходимости надеюсь, что это поможет

    Смежные вопросы