jQuery .each与.tpl中的Smarty变量

时间:2012-12-03 20:25:26

标签: javascript jquery smarty

我有一个包含以下html的页面,该页面多次显示不同的电话号码:

<div class="crm-content crm-contact_phone primary">
    <span>5555551212</span>
</div>

电话号码本身使用{$ phone.i.phone}形式的smarty变量显示,其中i是电话号码数组中的数组键。

我希望能够使用js更改这些电话号码的格式。

因此,对于一个电话号码,我在我的智能.tpl文件中使用了以下内容:

{literal}
cj(function($){

  var phoneNumber = {/literal}{$phone.1.phone}{literal};

  var phoneNumberFormatted = '(' + phoneNumber.substr(0,3) + ') ' + phoneNumber.substr(3,3) + '-' + phoneNumber.substr(6);

  $(".crm-contact_phone span").text(phoneNumberFormatted);

});
{/literal}

所以我想,我需要做一些事情:

$('.crm-contact_phone span').each(function(i, obj) {
    var phoneNumber = '' + {/literal}{$phone.1.phone}{literal};   
}

但我不知道如何用javascript索引i替换smarty变量中的1。

有什么想法吗?感谢。

2 个答案:

答案 0 :(得分:0)

试试这个

$('.crm-contact_phone span').each(function(i, obj) {
      var phoneNumber = '' + {/literal}{$phone[i].phone}{literal}; 
}

使用括号表示法并将其替换为 i

答案 1 :(得分:0)

我最后采用了不同的方法,使用以下方法将整个smarty数组保存到js数组中:

var phoneNumbers = {/literal}{$phone|@json_encode}{literal};

然后我可以使用纯粹的js来访问电话号码:

 var phoneNumber = phoneNumbers[i]['phone'];