Philip O'Brien
Philip O'Brien

Reputation: 4266

Button clicks in Jade

I'm having difficulty getting a button to execute a javascript function when it is clicked, below is my jade file

extends layout
block content
  - var something = function() {
  -   console.log('something')
  - }

  button(onclick='#{something()}') Click

Where am I going wrong with this?

Upvotes: 18

Views: 46737

Answers (2)

timaschew
timaschew

Reputation: 16602

With this line:
button(onclick='#{something()}') Click

you tell Jade that it should paste the content of the function into the value of the onclick attribute.

Just reference the function name:

button(onclick='something()') Click

But this won't work, because the function is only available in the Jade compile step. After this step the generated HTML has no access to the variables which was defined in Jade.

You need to include a JavaScript file or use the script tag:

script.
  var something = function() {
    console.log('something')
  }

button(onclick='something()') Click

Upvotes: 44

Evgeny Samsonov
Evgeny Samsonov

Reputation: 2750

Just add a space:

button(onclick='#{something()}') Click

Upvotes: 3

Related Questions