Bootstrap-Multiselect

Can't seem to get the bootstrap-multiselect.js to work properly with Knockout

HTML

<script src="http://cdnjs.cloudflare.com/ajax/libs/knockout/2.3.0/knockout-min.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
<select id="example39" multiple="multiple" style="display: none;">
    <optgroup label="Mathematics">
        <option value="analysis">Analysis</option>
        <option value="algebra">Linear Algebra</option>
        <option value="discrete">Discrete Mathematics</option>
        <option value="numerical">Numerical Analysis</option>
        <option value="probability">Probability Theory</option>
    </optgroup>
    <optgroup label="Computer Science">
        <option value="programming">Introduction to Programming</option>
        <option value="automata">Automata Theory</option>
        <option value="complexity">Complexity Theory</option>
        <option value="software">Software Engineering</option>
    </optgroup>
</select>

JavaScript

/**
 * bootstrap-multiselect.js
 * https://github.com/davidstutz/bootstrap-multiselect
 *
 * Copyright 2012, 2013 David Stutz
 *
 * Dual licensed under the BSD-3-Clause and the Apache License, Version 2.0.
 */! function ($) {

    "use strict"; // jshint ;_;

    if (typeof ko !== 'undefined' && ko.bindingHandlers && !ko.bindingHandlers.multiselect) {
        ko.bindingHandlers.multiselect = {
            init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {},
            update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {

                var config = ko.utils.unwrapObservable(valueAccessor());
                var selectOptions = allBindingsAccessor().options;
                var ms = $(element).data('multiselect');

                if (!ms) {
                    $(element).multiselect(config);
                } else {
                    ms.updateOriginalOptions();
                    if (selectOptions && selectOptions().length !== ms.originalOptions.length) {
                        $(element).multiselect('rebuild');
                    }
                }
            }
        };
    }

    /**
     * Constructor to create a new multiselect using the given select.
     * 
     * @param {jQuery} select
     * @param {Object} options
     * @returns {Multiselect}
     */
    function Multiselect(select, options) {

        this.options = this.mergeOptions(options);
        this.$select = $(select);

        // Initialization.
        // We have to clone to create a new reference.
        this.originalOptions = this.$select.clone()[0].options;
        this.query = '';
        this.searchTimeout = null;

        this.options.multiple = this.$select.attr('multiple') === "multiple";
        this.options.onChange = $.proxy(this.options.onChange, this);
        this.options.onDropdownShow = $.proxy(this.options.onDropdownShow, this);
        this.options.onDropdownHide =...