Update: you avoid custom binding by adding clickBubble: false as an additional snap with click binding, as suggested by Kevin Obi and demonstrated in this example: http://jsfiddle.net/kevinobee/Q25ja/2/
Original: you can use a custom binding that binds the click binding and prevents additional events from occurring. It might look like this:
ko.bindingHandlers.clickAndStop = { init: function(element, valueAccessor, allBindingsAccessor, viewModel, context) { var handler = ko.utils.unwrapObservable(valueAccessor()), newValueAccessor = function() { return function(data, event) { handler.call(viewModel, data, event); event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); }; }; ko.bindingHandlers.click.init(element, newValueAccessor, allBindingsAccessor, viewModel, context); } };
Here is an example: http://jsfiddle.net/rniemeyer/xj7Hs/
RP Niemeyer
source share