2013-11-22 4 views
5

क्या एक jQuery UI संवाद पर क्लोज़ (एक्स) बटन में तार करने का कोई तरीका है, जैसे कि आप एक समर्पित ईवेंट हैंडलर प्रदान कर सकते हैं? "करीबी" या "पहले से" घटना का उपयोग करना काम नहीं करता है क्योंकि यदि आपके संवाद में अन्य बटन हैं जो संवाद को बंद करने का कारण बनते हैं, तो आप हमेशा "बंद" और "पहले से" घटनाओं को हिट करने जा रहे हैं, जो वांछनीय नहीं है । मैं क्लोज़ (एक्स) बटन से विशिष्ट कोड चलाने का एक तरीका चाहता हूं।jQuery UI संवाद में करीबी (एक्स) बटन के लिए समर्पित ईवेंट हैंडलर

उत्तर

3

आप की कोशिश कर सकते:

$(document).on('click','.ui-dialog-titlebar-close',function(){ 
    //close button clicked 
}); 
1

जहाँ तक मुझे पता के रूप में वहाँ उस बटन को सीधे तार की कोई रास्ता नहीं है, लेकिन आप एक dialogClass जोड़ने और एक घटना अपने आप हैंडलर तारों से कुछ अपने पॉपअप के लिए विशिष्ट कर सकते हैं:

var dialogClass ="yourPopupTitle"; 

$(document).on('click', '.'+ dialogClass +' .ui-dialog-titlebar-close', function() { 
    handleEvent(); 
}); 

FIDDLE

9

जब भी एक घटना एक jQuery यूआई विजेट के अंदर एक और घटना की ओर जाता है, मूल घटना हमेशा घटना ओ में शामिल है bject। इस मामले में, आप ईवेंट ऑब्जेक्ट को close कॉलबैक या dialogclose ईवेंट पर पास कर सकते हैं और जांच सकते हैं कि event.originalEvent मौजूद है या नहीं। यदि ऐसा होता है, तो आप मान सकते हैं कि बंद बटन पर क्लिक के माध्यम से संवाद बंद कर दिया गया था। यह beforeclose पर भी लागू होता है।

यदि आप पूरी तरह से सुनिश्चित करना चाहते हैं कि यह टाइटलबार में बंद बटन था, तो आप event.originalEvent.target देख सकते हैं और या तो .closest() का उपयोग कर कक्षा या DOM स्थान देख सकते हैं। - आप क्लिक करें घटना निकल करने के लिए और यह करने के लिए अपने कस्टम हैंडलर फिर से बाँध की आवश्यकता होगी http://jsbin.com/ajoheWAB/1/edit

0

मेरा मानना ​​है कि इस समाधान के लिए आप देख रहे हैं:

यहाँ कार्रवाई में यह दिखा एक jsbin है।

हालांकि यह धागा पुराना है, फिर भी मैं अपने समाधान को अन्य लोगों को लाभ पहुंचाने के लिए आशा के साथ जोड़ दूंगा।

var fnCustomerHandler = function() { 
    alert("Here is your custom handler..."); 
}; 

$("#dialog").dialog({ 
     open: function(event, ui) { 
      var el = $(this).closest('.ui-dialog').find('.ui-dialog-titlebar-close'); 
      el.off(); 
      el.on("click", fnCustomerHandler); 
     } 
    } 
); 

फिडल लिंक:

http://jsfiddle.net/morefool/n82649d5/

संबंधित मुद्दे