Ich habe den Auslöser für das Ausblenden / Anzeigen von Ereignissen in Catalint basierend auf Glenns Idee geändert. Mein Problem war, dass ich eine modulare Anwendung habe. Ich wechsle zwischen Modulen, die Divs-Eltern ein- und ausblenden. Wenn ich dann ein Modul verstecke und ein anderes zeige, habe ich mit seiner Methode eine sichtbare Verzögerung, wenn ich zwischen Modulen wechsle. Ich brauche dieses Ereignis nur manchmal zu beleuchten, und bei einigen besonderen Kindern. Deshalb habe ich beschlossen, nur die Kinder mit der Klasse "displayObserver" zu benachrichtigen.
$.each(["show", "hide", "toggleClass", "addClass", "removeClass"], function () {
var _oldFn = $.fn[this];
$.fn[this] = function () {
var hidden = this.find(".displayObserver:hidden").add(this.filter(":hidden"));
var visible = this.find(".displayObserver:visible").add(this.filter(":visible"));
var result = _oldFn.apply(this, arguments);
hidden.filter(":visible").each(function () {
$(this).triggerHandler("show");
});
visible.filter(":hidden").each(function () {
$(this).triggerHandler("hide");
});
return result;
}
});
Wenn ein Kind dann auf das Ereignis "Zeigen" oder "Verstecken" hören möchte, muss ich ihm die Klasse "displayObserver" hinzufügen, und wenn es nicht weiter hören möchte, entferne ich ihm die Klasse
bindDisplayEvent: function () {
$("#child1").addClass("displayObserver");
$("#child1").off("show", this.onParentShow);
$("#child1").on("show", this.onParentShow);
},
bindDisplayEvent: function () {
$("#child1").removeClass("displayObserver");
$("#child1").off("show", this.onParentShow);
},
Ich wünsche Hilfe