2012-03-15 8 views
5

एक बार फैंक्सबॉक्स बंद कर देता है मैं फैंक्सबॉक्स सामग्री के भीतर एक लिंक से एक Fancybox उदाहरण बंद करने की कोशिश कर रहा हूं। मैं this question में अनुशंसित parent.jQuery.fancybox.close(); का उपयोग कर रहा हूं। यह पहली बार काम करता है, लेकिन उसके बाद नहीं। क्या कोई फिक्स सुझा सकता है? लिंक Fancybox शुरू करने, उस सामग्री div, जो Fancybox बंद करने के लिए लिंक शामिल साथparent.jQuery.fancybox.close(); फैंक्सबॉक्स के भीतर से केवल

#content { 
    display: none; 
} 

और यहाँ है:

मैं इस के साथ पेज में मेरी सामग्री div छुपा रहा हूँ।

<a href="#" id="launch">Launch</a> 

<div id="content"> 
    <p>Nunc porttitor pellentesque magna a pulvinar. Vestibulum id diam lectus. Praesent vel dictum est.</p> 

    <a href="#" id="close">Close</a> 
</div> 

और यह मेरा जेएस है। मैंने फ़ेंसीबॉक्स खोलने के लिए ईवेंट हैंडर को करीबी लिंक में जोड़ने का प्रयास किया है, लेकिन इससे मदद नहीं मिली।

$(document).ready(function(){ 
    $('#launch').fancybox({ 
     'width': 300, 
     'content': $('#content'), 
     'onClosed':function() { 
      $("#content").hide(); 
     }, 
     'onStart':function() { 
      $("#content").show(); 
      $('#close').on('click', function(){ 
       //console.log($(this).parent); 
       parent.jQuery.fancybox.close(); 
      }) 
     }, 
     'onCleanup':function() { 
      $("#content").unwrap(); 
     } 
    }); 
}) 

धन्यवाद दोस्तों!

+0

तो क्या होता है अगर तुम सिर्फ पर() '' .fancybox() 'समारोह के समारोह _outside_ डाल' $ ('# पास')।? – Sparky

+0

यही बात स्पार्की - लाइटबॉक्स पहली बार जब आप इसे लॉन्च बंद कर देता है, लेकिन नहीं है कि के बाद। –

+0

मुझे लगता है कि मैं पूरी तरह से समझ नहीं पा रहा हूं कि आप क्या करने की कोशिश कर रहे हैं। मैं फैंसीबॉक्स का उपयोग करता हूं और आपकी तरह की कोई समस्या नहीं थी। [Fancybox प्रलेखन] के अनुसार (http://fancyapps.com/fancybox/#docs), मैं भी 'onClosed',' onStart' या 'onCleanup' तरीकों को खोजने नहीं कर सकते। – Sparky

उत्तर

7

parent.jQuery.fancybox.close(); को फैंसीबॉक्स में खोले गए iframe के भीतर से कॉल किया जाना चाहिए। आपके मामले में आप inline सामग्री खोल रहे हैं ताकि उपसर्ग parent आवश्यक नहीं है। इसके अतिरिक्त आपको अपनी इनलाइन सामग्री में सही संरचना प्रदान करनी होगी और वहां से समापन कार्य को कॉल करना होगा।

तो अपने इनलाइन सामग्री की तरह

<div style="display: none;"> 
<div id="content"> 
    <p>Nunc porttitor pellentesque magna a pulvinar. Vestibulum id diam lectus. Praesent vel dictum est.</p> 
    <a href="javascript:;" id="close">Close</a> 
</div> 
</div> 

देखने की वजह से आप ऊपर इस सीएसएस

#content { 
    display: none; 
} 

की जरूरत नहीं है के बाद से #content पहले से ही एक छिपा हुआ div अंदर है चाहिए।

फिर अपने समापन समारोह fancybox स्क्रिप्ट से अलग किया जा सकता है ... भी नीचे fancybox स्क्रिप्ट पर बदलाव नज़र आ:

$(document).ready(function(){ 
$('#close').on('click', function(){ 
    //console.log($(this).parent); 
    $.fancybox.close(); 
}); //on 
/* 
// you could also do 
$('#close').click(function(){ 
$.fancybox.close(); 
}); 
*/ 
$('#launch').click(function(){ 
    $.fancybox({ 
    'width': 300, 
    'href': '#content', 
    'onCleanup':function() { 
    $("#content").unwrap(); 
    } 
    });//fancybox 
}); // click 
}); //ready 

इस Fancybox v1.3.x के लिए है, संस्करण आप करने लगते हैं उपयोग कर रहे हैं। यदि आप काम करने के लिए .on() विधि चाहते हैं तो आपको jQuery v1.7.x का उपयोग करना चाहिए।

+0

धन्यवाद बहुत जेएफके, पूरी तरह से काम करता है! –

0
try{ 
     parent.jQuery.fancybox.close(); 
    }catch(err){ 
     parent.$('#fancybox-overlay').hide(); 
     parent.$('#fancybox-wrap').hide(); 
    } 

!!! समर्थन पर क्लिक न करें !!!

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