Da die Filter über Ajax geladen werden, müssen Sie Ihre Ereignisse an ein übergeordnetes Element binden, das beim Laden der Seite vorhanden ist, und dann das untergeordnete Element (das über Ajax geladen wird) von dort abrufen. Siehe Beispiel unten.
$('.Left').on('click', '.facet-option.js-facet-option', function(){
adjustClasses();
});
Ich habe etwas ähnliches gemacht, wenn die Standardfunktionalität des mobilen facettierte Suche Drop-Down einzustellen versuchen, die Filter herausrutschen aus aus dem Bildschirm zu machen, dann das Menü zu schließen, wenn ein Filter ausgewählt, oder das Overlay ist angeklickt.
Ich lausche auf Klicks auf einer der Facetten usw. und die Klassen entsprechend anpassen.
$(".close-filter-menu").on("click", function(){
$('.page').removeClass("filters");
$('.filter-overlay').removeClass("filters-open");
$(".Left.fleft.js-faceted-search-column").removeClass("mobile-in-view open");
})
$('.js-faceted-search-action.btn').on('click', function(event){
event.preventDefault();
var slideoutMenu = $('.Left.fleft.js-faceted-search-column');
var slideoutMenuWidth = $('.Left.fleft.js-faceted-search-column').width();
var overlay = $(".filter-overlay");
// toggle open class
slideoutMenu.toggleClass("open");
// slide menu
if (slideoutMenu.hasClass("open")) {
slideoutMenu.animate({
right: "0px"
});
$('html,body').scrollTop(0);
$('.page').addClass("filters");
overlay.addClass("filters-open");
} else {
slideoutMenu.animate({
left: -slideoutMenuWidth
}, 250);
}
});
function adjustClasses(){
var width = $(window).width();
if(width <= 768){
$(".page").removeClass("filters");
$(".filter-overlay").removeClass("filters-open");
$(".Left.fleft.js-faceted-search-column").removeClass("open");
$(".Left.fleft.js-faceted-search-column").removeClass("mobile-in-view");
}
}
$("html").on("click", "#ModalContainer .facet-option.js-facet-option", function(){
adjustClasses();
});
$('.Left').on('click', '.facet-option.js-facet-option', function(){
adjustClasses();
});
$('.Left').on('click', 'p.narrow-results-header', function(){
adjustClasses();
});
$('.Left').on('click', '.btn.js-btn-facet-range-update', function(){
adjustClasses();
});
$('.ToggleFilters').on('click', function(){
adjustClasses();
});
$('.Left').on('click', '.filter-overlay.filters-open').on('click', function(){
adjustClasses();
});
$('.Left').on('click', '.btn.btn-facet-more-options.more').on('click', function(){
adjustClasses();
});
Funktionen auszuführen, wenn die Filter ursprünglich haben, können Sie ajaxStop() verwenden;
$(document).ajaxStop(function(){
$('.js-faceted-search-action.btn').addClass("just-loaded");
})
Hoffe, das hilft.
Dank, der wie es funktioniert aussieht, obwohl es alle Ihre Trigger erscheint auf einem Klick basieren, was Anfangslast, zum Beispiel, wenn der Benutzer zuerst die Seite und eine Auswahl hasnt lädt gemacht worden noch. – Shane
Siehe meine Bearbeitung. Ich denke, das ist was du suchst. Wenn nicht, bitte erläutern Sie genau, was Sie erreichen möchten. – thannes