knockout.js and jquery mobile question

https://groups.google.com/d/topic/knockoutjs/kNTXcPUuv6s/discussion

by rniemeyer

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="http://knockoutjs.com/downloads/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>
        </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(event) {
        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);

});