Привязать TMPL к коллекции JQuery - PullRequest
0 голосов
/ 08 июня 2011

Может кто-нибудь объяснить это поведение, представьте, что у вас есть коллекция jQuery, например:

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

Затем я хочу создать текстовое соединение, чтобы получить "pX, pY", используя следующий шаблон:

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

Результатом является текстовый узел с первым значением в списке «pX».

Конечно, есть другие способы решения этого примера, например.

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

С некоторой отделкой.Но мой вопрос о поведении tmpl, я не понимаю, почему он принимает только первое значение.

1 Ответ

2 голосов
/ 08 июня 2011

ваши параметры - это коллекция результатов селектора jQuery, похоже, что механизм шаблонов не понимает, что это коллекция, и связывает одну строку со всей коллекцией, поэтому $ data.val () возвращает первое значение (то есть поведение по умолчанию селектора jquery).

Если вы вместо этого сделаете

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

.get () вернет лежащие в основе элементы DOM в виде массива, механизм шаблонов без проблем с этими данными. Не забывайте, что вам нужно изменить шаблон с $ data.val () на $ data.value, так как теперь вы работаете непосредственно с элементом DOM

...