How can I make conditional binding in knockout.js?

binding, knockout.js

Solution

Assuming you have this:

function viewModel() {
    this.itemSelected = ko.observable(true);
}
ko.applyBindings(new viewModel());​

Add a () after itemSelected to get the current value of the observable that you can use with the ternary operator:

`<div data-bind="attr: { class: itemSelected() ? 'selected' : 'unselected' }"></div>​`

http://jsfiddle.net/RK7Ty/

If you didn't need to assign the unselected class for the non selected state you could do this instead:

<div data-bind="css: { selected: itemSelected }"></div>​

http://jsfiddle.net/RK7Ty/1/

Problem

I tried this one : ``` <div data-bind="attr: {class: itemSelected? 'selected' : 'unselected' }"></div> ``` But it does not work :)

Original source