Javascript 将tmpl绑定到jquery集合
任何人都可以解释这种行为,假设您有一个jQuery集合,如下所示:Javascript 将tmpl绑定到jquery集合,javascript,jquery-templates,Javascript,Jquery Templates,任何人都可以解释这种行为,假设您有一个jQuery集合,如下所示: var list = $("#mySelect").children().filter(":selected"); 然后,我想使用以下模板创建一个文本连接以获得“pX,pY”: var concatenation = $.tmpl("p${$data.val()}, ", list); 结果是只有列表“pX”中的第一个值的文本节点 当然,还有其他方法来解决这个例子,例如 "p" + $("#mySelect").val().
var list = $("#mySelect").children().filter(":selected");
然后,我想使用以下模板创建一个文本连接以获得“pX,pY”:
var concatenation = $.tmpl("p${$data.val()}, ", list);
结果是只有列表“pX”中的第一个值的文本节点
当然,还有其他方法来解决这个例子,例如
"p" + $("#mySelect").val().join(", p");
稍微修剪一下。但是我的问题是关于tmpl行为的,我不明白为什么它只接受第一个值。您的选项是一个jQuery选择器结果集合,它看起来好像模板引擎不理解这是一个集合,并且将一行数据绑定到整个集合,这就是为什么$data.val()返回第一个值(这是jquery选择器的deafault行为) 如果你改为
var concatenation = $.tmpl("p${$data.value}, ", options.get());
.get()将以数组的形式返回基础DOM元素,模板引擎将以数据绑定的形式返回这些元素。不要忘记,您需要将模板从$data.val()更改为$data.value,因为您现在直接针对DOM元素工作谢谢!(抱歉,如果有人对此感到困惑,我将“选项”重命名为“列表”)。但是jQuery集合不应该是有效的输入吗???