Search code examples
javascriptjqueryhandlebars.js

handling jQuery onClick event on handlebars


I would like to set up a simple jQuery onClick event to make the UI dynamic on a handlebars template. I was wondering to addClass() after a specific click.

consider the HTML (generated by handlebars)

  {{#if hasButton}}
      <div id="container">      
          <button type="submit" class="myButton">Click me!</button>
      </div>
  {{/if}}

i.e: After a click within a button, its container will receive a loading class that will create the interaction using CSS.

$(".myButton").on("click", function(event){
        $(this).parent().addClass("loading");
});

This code should goes on my handlebars-template or should I rewrite it into a specific helper for it? Is there any examples that could be provided so I can study it then develop something similar?

Thanks in advance!


Solution

  • You have to refresh your Jquery listeners AFTER the insertion of nodes into your DOM HTML.

    var source   = "<li><a href="{{uri}}">{{label}}</a></li>";
    var template = Handlebars.compile(source);
    var context = {"uri":"http://example.com", "label":"my label"};
    $("ul").append( template(context) );
    
    // add your JQuery event listeners
    $("li").click(function(){ alert("success"); });