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 に答える