Tôi đã thay đổi trình kích hoạt ẩn / hiển thị từ Catalint dựa trên ý tưởng của Glenns. Vấn đề của tôi là tôi có một ứng dụng mô-đun. Tôi thay đổi giữa các mô-đun hiển thị và ẩn cha mẹ div. Sau đó, khi tôi ẩn một mô-đun và hiển thị một mô-đun khác, với phương thức của nó, tôi có độ trễ hiển thị khi tôi thay đổi giữa các mô-đun. Đôi khi tôi chỉ cần thắp sáng sự kiện này, và ở một số đứa trẻ đặc biệt. Vì vậy, tôi quyết định chỉ thông báo cho những đứa trẻ với lớp "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;
}
});
Sau đó, khi một đứa trẻ muốn nghe sự kiện "hiển thị" hoặc "ẩn", tôi phải thêm cho nó lớp "displayObserver" và khi nó không muốn tiếp tục nghe nó, tôi sẽ loại bỏ nó
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);
},
Tôi muốn giúp đỡ