Still working on those jQuery buttons. Trying to update old ASP.Net Webforms using jQuery, Knockout, and Amplify.
New problem today.
I was having problems getting Knockout to enable/disable my jQuery buttons using the Knockout ‘enable’ bindingHandler. It would enable/disable the underlying element that I had run the .button() method on, but it had no idea about the div that jQuery had wrapped my element in, or how to handle it.
I wrote a custom bindingHandler for Knockout to handle this case. It also can handle non-jQuery elements as well, so you could change the declaration from ‘jEnable’ to ‘enable’, and this would work as a all-comers enable function.
Since this method uses jQuery (and is more expensive than the plain old ‘enable’), I figured the extra binding was the best approach.
	if (ko && ko.bindingHandlers) {
		ko.bindingHandlers['jEnable'] = { 'update': function(element, valueAccessor) {
				var value = ko.utils.unwrapObservable(valueAccessor());
				var $element = $(element);
				$element.prop("disabled", !value);
				if ($element.hasClass("ui-button")) {
					$element.button("option", "disabled", !value);
				}
			}
		};
	}
An example on how to use this:
	<input id="btnToEnable" type="button" data-bind="jEnable: isEnabled" />
	<script>
		$("#btnToEnable").button();
		var viewModel = { isEnabled: ko.observable(true) };
		ko.applyBindings(viewModel);
	</script>
A gist of this code is here.
