I have a template named layout in my app. Inside has:
<body id="body class="{{blue}}>
Basically what I want to achieve is that when you hit a url, for example, www.abc.com/sky, I want to add a body class of blue:
<body id="body class="blue">
In my client folder I have this but seems not to work:
Template.layout.helpers({
blue: function() {
var loc = window.location.href; // returns the full URL
if(/sky/.test(loc)) {
$('#body').addClass('blue');
}
}
});
I am new to the javascript world and I am following a tutorial but the tutorial was not aimed for Meteor.
I too needed this feature and found the same issue as @phocks in that
{{klass}}
only works inside and not on the body tag. I'm new at Meteor but here's my approach that just uses some jQuery:I use this in a
body.js
file, and this code relies on FlowRouter. On path changes, I get thename
I declared for the route, remove any previous route names from the body tag, then add the current route's name.As a small side note, I also add a class of
logged-in
to the body for authenticated users, so that's what the bottom few lines are doing.You shold modify DOM elememts in onRendered like this:
An alternative (and probably easier) solution is just to use a helper on your
body
template:Then your
body
could look like this: