ThickBox가 닫혔을 때 이벤트를 어떻게 트리거하시겠습니까?
이 질문은 워드프레스와 반 관련된 질문이지만 다른 곳에 응용 프로그램이 있습니다.기본적으로, 누군가가 Thickbox에서 나갈 때 페이지의 다른 곳에서 이벤트가 발생하도록 만들려고 합니다.Thickbox 파일을 편집하는 것은 선택 사항이 아닙니다.
Thickbox가 그렇게 쓰이지 않아서 좀 복잡합니다.하지만 아마 여러분은 그것을 하기 위해 몇 가지 속임수를 사용할 수 있을 것입니다.
권장되는 솔루션은 아니지만 닫기 기능을 "다시 작성"할 수 있습니다.다음과 같은 경우:
var old_tb_remove = window.tb_remove;
var tb_remove = function() {
old_tb_remove(); // calls the tb_remove() of the Thickbox plugin
alert('ohai');
};
웍스 \o/ http://jsfiddle.net/8q2JK/1/
이런 걸 시도해 볼 수도 있고요
var tb_unload_count = 1;
$(window).bind('tb_unload', function () {
if (tb_unload_count > 1) {
tb_unload_count = 1;
} else {
// do something here
tb_unload_count = tb_unload_count + 1;
}
});
tb_unload
두 번 트리거되므로 코드가 두 번째로 실행되지 않도록 약간의 해킹이 포함됩니다.
이것이 글로벌 솔루션인지는 확실하지 않지만 WordPress의 경우 적어도 최신 버전(4.9.5)에서는 다음을 사용할 수 있습니다.
jQuery( 'body' ).on( 'thickbox:removed', function() {
// Your code here.
});
Thickbox v3.1에서 tb_remove() 호출:
jQuery( 'body' ).trigger( 'thickbox:removed' );
참조: https://github.com/WordPress/WordPress/blob/master/wp-includes/js/thickbox/thickbox.js#L290
클릭 핸들러를 닫기 버튼에 바인딩하여 해킹할 수 있다고 생각합니다.
$("#TB_closeWindowButton").click(function() {
doSomething();
});
선택의 여지가 있다면 두꺼운 상자(더 이상 유지되지 않으므로)를 없애고 보다 활동적인 커뮤니티가 있는 것을 사용합니다.사실 두터운 박스 사이트는 몇 가지 대안을 제시합니다.
청취자를 thick 박스가 닫혔을 때 트리거되는 "tb_unload"에 바인딩할 수 있습니다.jQuery 사용 예제:
<input id="tb_button" type="button" value="Click to open thickbox" />
jQuery('#tb_button').on('click', function(){
tb_show('This is Google in a thickbox', 'http://www.google.com?TB_iframe=true');
jQuery('#TB_window').on("tb_unload", function(){
alert('Triggered!');
});
}
Thickbox 3.1에서는 Thickbox-fixed.js 안으로 들어가 나를 위한 맞춤 기능을 추가할 것입니다.
콜백 기능을 추가하는 것만으로도 좋은 방법은 확실하지 않지만, 제 프로젝트에서는 효과가 있습니다.
function mycustom_tb_remove(callback) {
$("#TB_imageOff").unbind("click");
$("#TB_closeWindowButton").unbind("click");
$("#TB_window").fadeOut("fast",function(){
if(callback)callback();
$('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();
});
$("#TB_load").remove();
if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
$("body","html").css({height: "auto", width: "auto"});
$("html").css("overflow","");
}
document.onkeydown = "";
document.onkeyup = "";
return false;
}
그래서 커스텀 리무브 기능을 사용할 때.이렇게 쓸게요.
self.parent.mycustom_tb_remove(function(){
alert("Closed");
});
두꺼운 상자가 열리면 이벤트를 시작하고 싶었습니다. 이런 식으로 할 수 있었습니다. (누군가에게 도움이 되었으면 좋겠습니다.
jQuery( 'body' ).on( 'thickbox:iframe:loaded', function ( event ) {
//Your trigger code here.
});
언급URL : https://stackoverflow.com/questions/6091998/how-would-you-trigger-an-event-when-a-thickbox-closes
'source' 카테고리의 다른 글
jQuery로 텍스트 색상을 변경하려면 어떻게 해야 합니까? (0) | 2023.10.09 |
---|---|
랜덤 DAG 생성 (0) | 2023.10.09 |
이미지 파일을 양식 데이터에 추가 - Cordova/Angular (0) | 2023.10.09 |
동적으로 jQuery UI 변경 대화상자 버튼 텍스트 (0) | 2023.10.09 |
"javscript:void(0);" vs "return false" vs "preventDefault()" (0) | 2023.10.09 |