Saya mengubah pemicu acara sembunyikan / tampilkan dari Catalint berdasarkan ide Glenns. Masalah saya adalah saya punya aplikasi modular. Saya mengubah antara modul yang menunjukkan dan menyembunyikan orangtua divs. Kemudian ketika saya menyembunyikan modul dan menunjukkan yang lain, dengan metodenya saya memiliki keterlambatan yang terlihat ketika saya mengubah antar modul. Saya hanya kadang-kadang perlu menyulut acara ini, dan pada beberapa anak spesial. Jadi saya memutuskan untuk memberi tahu anak-anak dengan kelas "displayObserver"
$.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;
}
});
Kemudian ketika seorang anak ingin mendengarkan acara "show" atau "hide" saya harus menambahkan dia kelas "displayObserver", dan ketika itu tidak ingin melanjutkan mendengarkannya, saya menghapusnya kelas
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);
},
Saya berharap bantuan