Я немного отчаялся здесь. Я читал все, что смог найти на Drupal.behaviours, но, очевидно, его все еще недостаточно. Я пытаюсь запустить сетку кладки с плагином infinitescroll, чтобы прикрепить новые изображения к кладке. Это работает отлично до сих пор. Следующее, что я хотел реализовать на своем веб-сайте, это эффект наведения (который показывает информацию на изображениях), а затем и fancybox, чтобы показывать изображения в огромном размере.
(function ($) {
Drupal.behaviors.views_fluidgrid = {
attach: function (context) {
$('.views-fluidgrid-wrapper:not(.views-fluidgrid-processed)', context).addClass('views-fluidgrid-processed').each(function () {
// hide items while loading
var $this = $(this).css({opacity: 0}),
id = $(this).attr('id'),
settings = Drupal.settings.viewsFluidGrid[id];
$this.imagesLoaded(function() {
// show items after .imagesLoaded()
$this.animate({opacity: 1});
$this.masonry({
//the masonry settings
});
});
//implement the function of jquery.infinitescroll.min.js
$this.infinitescroll({
//the infinitescroll settings
},
//show new items and attach behaviours in callback
function(newElems) {
var newItems = $(newElems).css({opacity: 0});
$(newItems).imagesLoaded(function() {
$(newItems).animate({opacity: 1});
$this.masonry('appended', newItems);
Drupal.attachBehaviours(newItems);
});
});
});
}
};
})(jQuery);
Теперь я прочитал, что мне нужно заново подключить Drupal.behaviours, если я хочу, чтобы событие hover также происходило с недавно добавленным контентом.
(function ($) {
Drupal.behaviors.imgOverlay = {
attach: function (context) {
var timeout;
$('.img_gallery').hover(function() {
$this = $(this);
timeout = setTimeout(change_opacity, 500);
}, reset_opacity);
function change_opacity() {
//set opacity to show the desired elements
}
function reset_opacity() {
clearTimeout(timeout);
//reset opacity to 0 on desired elements
}
}
};
})(jQuery)
Где мне теперь написать Drupal.attachBehaviours (), чтобы заставить его работать на самом деле? Или есть какая-то другая ошибка, которую я просто не вижу? Надеюсь, я написал вопрос так, чтобы он был понятен и, возможно, он также помог кому-то еще, поскольку я обнаружил, что в drupal 7 не существует настоящей «официальной» рабочей версии этой комбинации.