Javascript 将smarty变量分配给jquery选择器

Javascript 将smarty变量分配给jquery选择器,javascript,jquery,jquery-selectors,smarty,Javascript,Jquery,Jquery Selectors,Smarty,我使用以下代码将smarty变量分配到jquery选择器中 {literal} <script type="text/javascript"> $( document ).ready(function() { var prodid = {/literal}{$product.product_id}{literal}; $( "#option_" + prodid + "_1252" ).change(funct

我使用以下代码将smarty变量分配到jquery选择器中

{literal}
    <script type="text/javascript">
        $( document ).ready(function() {
            var prodid = {/literal}{$product.product_id}{literal};

            $( "#option_" + prodid + "_1252" ).change(function() {
                if(4281 == $(this).val()){       
                    //some code    
                }
            });    
        });
    </script>
{/literal}
在选择器中,我得到了这个

$( "#option_" + prodid + "_1252" ).change(function() {
而不是这个

$( "#option_766_1252" ).change(function() {

你知道我做错了什么吗?

在jquery选择器中有一个不必要的var声明。试试这个:

$( "#option_" + prodid + "_1252" ).change(function() {
Smarty不会为您解析javascript,因此您不会得到
$(“#option_766_1252”)
,除非您这样做

$( "#option_{/literal}{$product.product_id}{literal}_1252" ).change(function() { 

您混淆了后端php(smarty)模板和浏览器端javascript的范围<代码>$(“#选项"+prodid+“1252”)。更改(function(){是正确的,因为javascript将能够读取JS范围内动态分配的prodid变量。thnx!我完全得到了我想要的!OP最初有
$(“#选项"+var prodid+“1252”)。更改(function(){
,但对其进行了编辑。
$( "#option_{/literal}{$product.product_id}{literal}_1252" ).change(function() {