Blueimp Gallery: всегда показывать "blueimp-gallery-controls" или как отключить обработчик кликов, чтобы показать и скрыть "blueimp-gallery-controls"

используя Галерея Blueimg Я хотел бы знать, как я всегда могу показать элементы управления галереи (.blueimp-gallery-controls) вместо того, чтобы показывать и прятать их при нажатии на img class=".slide-content" в галерее.

глядя на галерею blueimp.минута.js (что я украсил с онлайн JavaScript beautifier я нашел несколько обработчиков кликов, также указывающих на функцию переключения для элементов управления галереей.

toggleControls: function() {
    var a = this.options.controlsClass;
    this.container.hasClass(a) ? this.container.removeClass(a) : this.container.addClass(a)
},

мне кажется, что просто комментируя эти 4 строки дают мне желаемое поведение. Однако мне не очень нравится менять оригинальный сценарий.

это также бросает Uncaught TypeError: undefined is not a function ошибка в самом конце (this.toggleControls()) внутри этой части скрипта.

f(c.toggleClass) ? (this.preventDefault(b), this.toggleControls()) : f(c.prevClass) ? (this.preventDefault(b), this.prev()) : f(c.nextClass) ? (this.preventDefault(b), this.next()) : f(c.closeClass) ? (this.preventDefault(b), this.close()) : f(c.playPauseClass) ? (this.preventDefault(b), this.toggleSlideshow()) : e === this.slidesContainer[0] ? (this.preventDefault(b), c.closeOnSlideClick ? this.close() : this.toggleControls()) : e.parentNode && e.parentNode === this.slidesContainer[0] && (this.preventDefault(b), this.toggleControls())

удаление , this.toggleControls() С конца этой строки в скрипте избавляется от этой ошибки, однако все это не совсем правильный подход, я думаю.

есть ли способ переопределить команды из этого скрипта в пользовательском скрипте, аналогичном the !important правило в CSS? Например, когда у Blueimp Gallery есть обновление, я могу оставить источник нетронутым и загрузить последнюю версию.

любая помощь очень высоко ценится :)

4 ответов


добавить класс blueimp-gallery-controls до blueimp-gallery div делает элементы управления видимыми с самого начала + функция переключения все еще работает

<div id="blueimp-gallery" class="blueimp-gallery blueimp-gallery-controls">

надеюсь, что это поможет.


для отображения элементов управления необходимо добавить класс blueimp-gallery-controls в контейнер галереи.

ваш контейнер будет выглядеть так

<div id="blueimp-gallery" class="blueimp-gallery blueimp-gallery-controls">
    <div class="slides"></div>
    <h3 class="title"></h3>
    <a class="prev">‹</a>
    <a class="next">›</a>
    <a class="close">×</a>
    <a class="play-pause"></a>
    <ol class="indicator"></ol>
</div>

затем можно отменить привязку обработчика щелчков, переопределив параметры по умолчанию. Перед инициализацией галереи важно переопределить параметры.

<script>
    blueimp.Gallery.prototype.options.toggleControlsOnReturn = false;
    blueimp.Gallery.prototype.options.toggleControlsOnSlideClick = false;
</script>

Я не уверен, хорошая идея или плохая. Это казалось самым простым и прямым путем.

.blueimp-gallery > .prev,
.blueimp-gallery > .next,
.blueimp-gallery > .close,
.blueimp-gallery > .title,
.blueimp-gallery > .play-pause {
    display: block; 
}

Я добавил BLUEIMP CSS в свой рабочий процесс SASS и просто изменил свойства отображения кнопок управления на block. Я не отключил обработчик click, который переключает класс управления gallery, так что все еще срабатывает.


чтобы отключить клики по изображению, вы можете установить toggleControlsOnSlideClick в false

пример :

<div id="blueimp-gallery" class="blueimp-gallery blueimp-gallery-controls">
    <div class="slides"></div>
    <h3 class="title"></h3>
    <a class="prev">‹</a>
    <a class="next">›</a>
    <a class="close">×</a>
    <a class="play-pause"></a>
    <ol class="indicator"></ol>
</div>

<script>
    document.getElementById('links').onclick = function (event) {
        event = event || window.event;
        var target = event.target || event.srcElement,
                link = target.src ? target.parentNode : target,
                options = {index: link, event: event, toggleControlsOnSlideClick: false},
                links = this.getElementsByTagName('a');
        blueimp.Gallery(links, options);
    };
</script>