движок шаблонов jquery, как связывать события - PullRequest
1 голос
/ 16 мая 2011

Есть ли способ передать функцию для привязки в шаблонизатор jQuery?http://api.jquery.com/tmpl/

Если я создаю HTML без шаблона, я бы сделал это следующим образом:

jQuery("<a>link</a>").click(function(){alert('hi!')}).appendTo( "#forms_container" );

как это сделать с помощью шаблонов jQuery?

------------ РЕДАКТИРОВАТЬ Я нашел здесь некоторую библиотеку http://knockoutjs.com/documentation/template-binding.html

и кажется, что-то вроде jQuery.live ()

Есть ли другие способы привязки функций к шаблонам илиэтот способ используется в основном по умолчанию?

----------- РЕДАКТИРОВАТЬ ОК, тогда пусть будет .delegate.Я думаю, что для моей небольшой задачи этого будет достаточно, не добавляя больше сложности с Knockout

Ответы [ 2 ]

4 голосов
/ 16 мая 2011

Аналогично Иану, но немного отличается по реализации:

jQuery('#forms_container').delegate('a', 'click', function() {
   //Click event, with context (faster)
});

Это означает, что все ссылки в forms_container будут иметь это событие click, независимо от того, что изменится. Это отличается от того, как Ян (совершенно законно) использует live, в том смысле, что у него есть контекст, поэтому события не должны всплывать до самого конца. Вы можете сделать то же самое, используя live (начиная с 1.4), если вы предоставите ему контекст, но я предпочитаю синтаксис delegate.

0 голосов
/ 16 мая 2011

Дайте вашей ссылке что-то, по чему ее можно идентифицировать (класс или аналог или основанный на родительских контейнерах) затем используйте .live

<script id="movieTemplate" type="text/x-jquery-tmpl">
    <div id="xyz"><a class="tmplClick">${link}</a> </div>
</script>

тогда:

$('a.tmplClick').live('click',function(){
    alert('clicked in template');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...