0

我有下一个问题:我正在使用引导程序和淘汰赛,并且我有一个用于打字头的自定义方法:

 ko.bindingHandlers.typeahead = {
update : function(element, valueAccessor, allBindingsAccessor) {
    $(element).typeahead({
        source : typeaheadSource[$(element).attr('id')]
    });
    var span = $(element.parentElement).children("span");
    if (span.length > 0) {
        span[0].onclick = function() {
            var t = typeaheadByElementId[$(element).attr('id')];
            if (t.shown == false) {
                hideAllTypeaheads();
                t.showAll();
            } else {
                t.hide();
            }
        };
    }
}
};

typeheadSource 数组的一部分

var typeaheadSource = [];
...
typeaheadSource['buildingWalls'] = [ 'blah', 'ablah', 'cblah-blah'];
...

以及用于预先输入的 html 代码:

 <div class='control-group'><label class='control-label' for='buildingWalls'>Материал наружных стен</label>
            <div class='input-append'>
                <input type='text' class='input-xlarge' id='buildingWalls' data-bind='value:buildingWalls, typeahead: true'> <span class="add-on"><i class="icon-chevron-down"></i></span>
            </div>
 </div>

它在 Firefox 18 和 chrome 上都可以正常工作,但在 Firefox 5 上不起作用(例如)。关于我想得到的:点击跨度后,所有提示都应该显示给你

4

1 回答 1

0
-       var span = $(element.parentElement).children("span");
-       if (span.length > 0) {
-           span[0].onclick = function() {

+       var span = element.nextElementSibling;
+       if (span) {
+           span.onclick = function() {

$(element.parentElement).children("span") 在 Firefox 5 中返回空数组,所以我用新的替换了这 3 行。

于 2013-02-11T10:02:12.820 回答