2016-06-07 2 views
1

Моя страница имеет статический заголовок (jqm), который условно отображается в зависимости от параметра. Ну, привязка работает, то есть отображается условно, содержимое страницы не перемещается вверх, когда заголовок не отображается.нокаут, если привязка к jquery mobile static header сохраняет пробел

Я также попробовал привязку css для установки отображения без везения.

HTML:

<div class="home-header" data-role="header" data-position="fixed" data-theme="c" data-bind="if: isFish, style: {display:isFish()? 'block':'none'} "> 
    <div class="logo" style="margin:0 auto;"></div> 
    </div> 
    <div>Content starts here</div> 
    <div data-bind="text:count"></div> 
    <div data-bind="text:isFish"></div> 

JavaScript:

var viewModel = new function() { 
    var self = this; 

    if (sessionStorage.clickcount) { 
    sessionStorage.clickcount = Number(sessionStorage.clickcount) + 1; 
    } else { 
    sessionStorage.clickcount = 1; 
    } 

    self.count = ko.observable(sessionStorage.clickcount); 
    self.isFish = ko.computed(function() { 
    return self.count() % 2 ==0; 
    }); 

}; //viewModel 

$(document).ready(function() { 
    ko.applyBindings(viewModel); 
}); 

Here's the demo.

Нажмите кнопку «Выполнить» несколько раз, чтобы увидеть, что изображение рыбы скрыто или отображается в зависимости от количества.

Я хочу, чтобы строка «Содержимое начинается здесь» на самом верху, когда изображение не отображается. Как это сделать? Заранее спасибо.

+1

Вау, мне потребовалось некоторое время, чтобы понять реальную проблему, но это странно один. Я обнаружил, что в случаях, когда это * не * отображается, если я изменяю размер окна браузера даже на 1 пиксель, он подпрыгнет. Преступник - это 'div data-role =" page "', который вставлен (я думаю) jquery-mobile, который имеет дополнение (как стиль элемента, так и класс), заставляя это пространство появляться. - Я не эксперт по jquery-mobile, но я бы рискнул предположить, что вам нужно использовать 'data-bind =" css ... "' и установить соответствующий класс jquery, чтобы скрыть предмет, в отличие от встроенного стиль? – Jeroen

+0

Да, вы правы. Он будет вскакивать, если окно будет изменено и да, data-role = "page" вставляет дополнение. Я попытаюсь использовать привязку css для привязки класса и скрыть это с помощью jquery. – WhatsInAName

ответ

1

вы можете попробовать, как этот

<!-- ko if: isFish--> 
<div class="home-header" data-role="header" data-position="fixed" data-theme="c"> 
    <div class="logo" style="margin:0 auto;"></div> 
</div> 
<!--/ko--> 
+0

Пока он работает в скрипке, он не работает в реальной среде jquery. У меня есть фоновое изображение, растянутое в соответствии с окном, а нижняя часть изображения обрезается, если я использую это решение. Упреждайте вас за то, что он работает на скрипке. – WhatsInAName

Смежные вопросы