javascript
  • jquery
  • jquery-plugins
  • 2012-04-25 40 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模板引擎。 – 2012-04-25 20:48:32

    +0

    請詳細解釋。 – AmirHossein 2012-04-25 20:49:59

    +1

    使用sprintf /格式類型的函數:看到這裏http://stackoverflow.com/questions/610406/javascript-equivalent-to-printf-string-format/4673436#4673436 – 2012-04-25 20:54:08

    回答

    2

    你試過.replace()

    http://jsfiddle.net/KL9kz/

    +0

    謝謝很多;-) – AmirHossein 2012-04-25 21:26:51

    2

    您可以簡單地替換它們。

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

    不確定您是否使用jQuery模板。

    +0

    不工作!我使用jQuery 1.71 – AmirHossein 2012-04-25 20:53:38

    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 2012-04-26 08:32:43

    +1

    糟糕,我的壞,我正在編輯工作的解決方案:)。請注意'Object.keys',因爲它不是跨瀏覽器,儘管填充它只是[幾行]的問題(https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys)( 'forEach'也一樣)。 – 2012-04-26 08:36:14

    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逃脫佔位符界限,如果需要 調整內部正則表達式希望它有幫助

    相關問題