JSFiddle - React, Tailwind, and code Playground
HTML
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.css">
<script src="http://code.jquery.com/jquery-1.5.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.js"></script>
<script src="https://github.com/downloads/SteveSanderson/knockout/knockout-1.2.1.js"></script>
<!DOCTYPE html>
<html>
<head>
<title>Knockout Demo</title>
</head>
<body>
<div data-role="page" id="master">
<div data-role="header">
<h1>Knockout Demo</h1>
</div>
<div data-role="content" id="content">
New item:
<input data-bind='value: itemToAdd, valueUpdate: "afterkeydown"' />
<button data-bind="click: addItem, jQueryButtonEnable: itemToAdd().length > 0">Add</button>
<p>Your items:</p>
<div data-role="fieldcontain">
<label for="selectbox">Choose:</label>
<select id="selectbox" data-native-menu="false" data-bind="jqmOptions: items"> </select>
</div>
</div>
</div>
</body>
</html>
JavaScript
function resetButton(button) {
setTimeout(function() {
$(button).removeClass('ui-btn-active');
}, 500);
}
$(document).ready(function () {
$("a[data-role='button']").live('click', function() {
resetButton($(this));
});
var viewModel = {};
viewModel.items = ko.observableArray(["Alpha", "Beta", "Gamma"]);
viewModel.itemToAdd = ko.observable("");
viewModel.addItem = function () {
if (viewModel.itemToAdd() != "") {
viewModel.items.push(viewModel.itemToAdd());
viewModel.itemToAdd("");
}
};
ko.bindingHandlers.jQueryButtonEnable = {
update: function(element, valueAccessor) {
ko.bindingHandlers.enable.update(element, valueAccessor);
var value = ko.utils.unwrapObservable(valueAccessor());
$(element).button(value ? "enable" : "disable");
}
};
ko.bindingHandlers.jqmOptions = {
update: function(element, valueAccessor, allBindingsAccessor, context) {
ko.bindingHandlers.options.update(element, valueAccessor, allBindingsAccessor, context);
$(element).selectmenu("refresh");
}
};
ko.applyBindings(viewModel);
});