Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将tmpl绑定到jquery集合_Javascript_Jquery Templates - Fatal编程技术网

Javascript 将tmpl绑定到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().

任何人都可以解释这种行为,假设您有一个jQuery集合,如下所示:

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集合不应该是有效的输入吗???