jquery-plugins - jQuery 模板内的 Javascript 函数无法正常工作

标签 jquery-plugins jquery-templates

我正在尝试使用 jQuery.tmpl 构建复选框列表 它将列出一系列项目,并在它们附近有一个复选框,我想以参数方式检查其中一些复选框...

模板代码为:

<ul>
{{each(i,val) Values}}
    <li>
        <input type="checkbox" {{if $.inArray(i, Default) != -1}} checked="checked"{{/if}}>
        <em>${val}</em>
    </li>
{{/each}}
</ul>

和模板定义:

<script type="text/javascript">
    $(document).ready(function() {
        $('#tpl_selector').tmpl({
            Default: [1,2],
            Values: {
                1: 'Item 1',
                2: 'Item 2',
                3: 'Item 3'
            }
        }).appendTo('#area');

    });
</script>

因此在这种情况下应检查第 1 项和第 2 项。创建列表没有问题,但 {{if $.inArray(i, Default) != -1}}checked="checked"{{/if}} 部分不起作用。

但是,当我用数字替换“i”时,它会起作用: {{if $.inArray(1, Default) != -1}}checked="checked"{{/if}}

我根本没有任何意义......你有什么建议吗?

填充复选框的另一个逻辑也可以,就像我不知道 smt 一样。就像渲染完成后的回调函数,否则......

最佳答案

问题

在 JavaScript 对象中,键始终是字符串。您的 Default 数组包含数字,但您传入的“针”(i) 是一个字符串 ,因此 $.inArray 将始终返回 false,。

jsfiddle 0

解决方案

其中任何一项都可以:

  1. 使Values成为一个正确的数组,而不是一个由包含数字的字符串“索引”的对象。
  2. Defaults设为字符串数组。
  3. parseInt()Values 键 (i) 传递给 $.inArray() 。我认为这是一个丑陋的修复。

哦,欢迎来到 Stack Overflow!

关于jquery-plugins - jQuery 模板内的 Javascript 函数无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4125058/

相关文章:

带有来自 flickr 的图像的 jquery 幻灯片

javascript - 使用jquery动态更改图像的href路径

javascript - 从插件中的 jQuery 对象中删除元素

jquery-templates - 使用选项参数的 jQuery 嵌套模板

javascript - 哪些 javascript/php 模板库将解析相同的模板文件?

javascript - 获取 jQuery 模板数组中的第一项

knockout.js - 是否可以在模板绑定(bind)中添加可选的绑定(bind)参数?

javascript - 分离标签的插件(如 stackoverflow 的输入标签界面)

javascript - 使来自 jquery 函数的变量可以从其他函数访问

jquery-templates - 我如何循环一个奇数/偶数类,因为它在项目上循环?