开发者

Bind tmpl to a jquery collection

开发者 https://www.devze.com 2023-03-11 14:52 出处:网络
Can anyone explain this behavior, imagine you have a jQuery collection, like this: var list = $(\"#mySelect\").children().filter(\":selected\");

Can anyone explain this behavior, imagine you have a jQuery collection, like this:

var list = $("#mySelect").children().filter(":selected");

Then I want to create a text-join to get "pX, pY" by using the following template:

var concatenation = $.tmpl("p${$data.val()}, ", list);

Result is a text node with only the first value in list "pX,".

Of course there are other ways to solve this example, eg.

"p" + $("#mySelect").val().join(", p");

With some trimming. But my question is about the tmpl behaviour, I don't understand why it only take开发者_StackOverflows the first value.


your options is a jQuery selector result collection, it looks like the template engine does not understand that this is a collection and databind one row to the entire collection, thats why $data.val() return the first value (Thats the deafault behavior of a jquery selector).

If you instead do

var concatenation = $.tmpl("p${$data.value}, ", options.get());

.get() will return the underlying DOM elements as an array, the template engine as no problem databind against these. Dont forget that you need to change your template from $data.val() to $data.value since you are now working directly against the DOM element

0

精彩评论

暂无评论...
验证码 换一张
取 消