为什么 jQuery 模板 {{each}} 标签与 jQuery $.each 对 JavaScript 字符串数组的解释不同?

2024-01-20

强制性的jsFiddle 示例 http://jsfiddle.net/patridge/wuEyp/.

当我通过 jQuery 运行字符串数组时$.each函数,我得到了我所期望的。

$.each(["abc", "123", "def", "456"], function (i, val) {
    $("<li></li>").text("source[" + i + "]: " + val).appendTo(".eachResults");
    // run for each string in the array ("abc", "123", ...)
});

当我通过 jQuery 模板运行相同的字符串数组时{{each}}运算符,但是,它将其视为二维数组chars.

<script id="testTemplate" type="text/x-jquery-tmpl"> 
<ul>
    {{each(i, prop) $data}}
    {{if $data.hasOwnProperty(i)}}
    <li>
        source[${i}]: ${$data[i]}
        {{! run for each char of each string in array (0:"a", 1:"b", 2:"c", 0:"1", 1:"2", 3:"3", ...)}}
    </li>
    {{/if}}
    {{/each}}
</ul>
</script>

$("#testTemplate").tmpl(["abc", "123", "def", "456"]).appendTo(".tmplResults");

自从i模板中似乎总是正确引用$data,我真的不知道这个索引是如何工作的。这好像是i需要是二维索引才能正常工作,但它似乎不是(typeof (i) === "number").

后续问题

@mblase75 确实在这里解释了这个问题。不幸的是,鉴于这是我实际代码的子集,结果只是带来了不同的结果关于递归调用的问题{{each}}当你遇到字符串数组时的模板 https://stackoverflow.com/questions/7436189/how-do-i-prevent-jquery-template-from-digging-too-deeply-on-a-string-array-in-a-r.


请记住,模板是一个隐式循环。你原来的{{each}}循环遍历每个字符串中的每个字符——模板循环遍历数组中的每个字符串。

这将为您提供所需的结果(或多或少):

<script id="testTemplate" type="text/x-jquery-tmpl"> 
    <li>
        source[]: ${$data}
    </li>
</script>

http://jsfiddle.net/wuEyp/10/ http://jsfiddle.net/wuEyp/10/使用上面的代码。索引消失了,因为模板似乎没有在“根”级别提供索引。

http://jsfiddle.net/wuEyp/11 http://jsfiddle.net/wuEyp/11将使用函数添加索引。由于某种原因,我无法通过关闭来正确完成它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 jQuery 模板 {{each}} 标签与 jQuery $.each 对 JavaScript 字符串数组的解释不同? 的相关文章

  • 为什么点击内容后放大的ajax弹出框会关闭

    请帮助我 我一直在尝试让放大的弹出ajax框显示登录表单 似乎表单出现了 但是一旦我单击表单或ajax主体中的任意位置 它就会消失 下面是代码 document ready function ajax popup link magnific
  • 非 DOM 对象上的 jQuery 自定义事件

    我最近阅读了一些代码 其功能如下 bob name Bob Smith rank 7 bob bind nameChanged function bob trigger nameChanged 这似乎有效 但我在 jQuery 文档或源代码
  • 未捕获的错误:找不到模块“jquery”

    我在用Electron https github com atom electron制作桌面应用程序 在我的应用程序中 我正在加载一个外部站点 Atom 应用程序之外 可以说http mydummysite index html http
  • 如何将送货地址复制到帐单地址

    我想知道是否可以将送货地址复制到帐单地址 当用户单击与送货地址相同的复选框时 送货地址值将被复制到账单输入字段 我完成了大部分部分 但我不确定如何将选择菜单 状态 值复制到帐单地址 我真的很感谢任何帮助 My code document r
  • Jquery - 通过在字符串中构建 id 的 id 获取元素

    我在使用 jquery 元素时遇到问题 我正在 var 中构造名称 例如 var myId myGotId myId attr title changed myId 返回空 我想通过 id 获取我的元素 但动态构建我的 Id 连接字符串 编
  • 显示覆盖以覆盖整个页面

    我有一个正在加载的网络应用程序iframe 我需要显示一个覆盖 div 来覆盖整个页面 问题是叠加层当前仅显示在iframe区域而不覆盖整个页面 我们的应用程序 子应用程序 是加载的一组应用程序的一部分iframe 你可以做这样的事情 di
  • 无法在 Chrome 中设置 currentTime

    由于某些原因 在 Chrome 中我无法设置音频标签的 currentTime 属性 我可以提醒 currentTime 并且它显示正确 但是当我尝试设置 currentTime 时它会恢复为零 进度条上有一个事件侦听器 它会触发如下所示的
  • wp_unregister 和 wp_enqueue

    有人建议我使用 wp unregister 和 wp enqueue 将 wordpress jquery 库替换为 google 托管的库 因为 wordpress 有一些问题 然而 当我尝试将这些插入我的 WordPress 网站时 它
  • jQuery 文件上传预览图像

    我正在使用 jQuery 文件上传插件 http blueimp github io jQuery File Upload http blueimp github io jQuery File Upload 用于我的网站的图像上传 我已经看
  • 如何在Jquery-Select2中设置多值选择中的选定值?

    我正在绑定我的下拉菜单Jquery Select2 它工作正常 但现在我需要绑定我的多值selectBox通过使用Jquery Select2 我的下拉菜单 div class divright div
  • 仅使用 Jquery 验证的字母

    我尝试了文章中的每个解决方案one https stackoverflow com questions 4115372 jquery validate plugin adding a custom validator to accept l
  • 添加动态数据时 footable 出现问题

    我需要 jQuery Mobile 方面的一些帮助富表 http css tricks com footable a jquery plugin for responsive data tables 我正在表中动态添加数据 HTML tab
  • 如果元素隐藏则忽略 .NET 验证器(显示:无)

    我们经常在使用 javascript css 隐藏的元素 即 display none 上使用 NET 验证器时遇到问题 例如 可能有语法错误 但不用担心
  • 在 WCF 服务上启用 CORS。获取 HTTP 405:不允许的方法

    我正在尝试在 WCF 服务上启用 CORS 当我尝试从客户端发送请求时 该请求是使用OPTIONS动词 我总是得到一个HTTP 405 Method not allowed error 如果我尝试使用 Fiddler 并使用以下命令创建相同
  • jQuery 验证:如何不显示错误?或者如何将错误显示为工具提示?

    我希望我的错误浮动在未验证的输入字段上方 左对齐 我怎样才能做到这一点 如果不能 我怎样才能关闭错误 我仍然希望字段能够验证 并在错误时突出显示 但不希望显示实际的错误消息 我似乎无法在 jQuery 文档中找到任何可以让我打开 关闭它们的
  • 为什么 jQuery 点击事件会多次触发

    我这里有这个示例代码http jsfiddle net DBBUL 10 http jsfiddle net DBBUL 10 document ready function creategene click function confir
  • 如何使用 jQuery 向表中添加新行,并为其分配递增的 id

    我有一个现有的 HTML 表格 它是用户输入 GPS 点的表单的一部分 用户还可以选择上传 GPS 数据点 我想要一个用户可以按下的按钮 其中一些 Javascript 会向表中添加一个或多个新行 但新行必须继续增加表中使用的名称和 id
  • 将杂散文本包裹在 div 中

    如何选择 任何没有包含标签的内容 来在 jQuery 中添加包装器 前任 div class post div class whatever This should remain untouched div I want to wrap t
  • 如何将 Browserify 与外部依赖项一起使用?

    我正在尝试慢慢地将 Browserify 引入我的网站 但我不想重写所有 js 也不希望 jquery 和其他库的重复实例与我的 Browserify 版本捆绑在一起 如果我构建将 jquery 列为外部依赖项的模块 那么如何将其指向我的全
  • 有没有非常轻的灯箱? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐