2010-09-02 13 views
20

मैंने हाल ही में JQuery Draggable और Resizable प्लगइन का उपयोग करके कुछ परेशानियों में भाग लिया। समाधान की तलाश में, मुझे कई अलग-अलग स्थानों में कुछ बहुत खंडित कोड मिला और अंत में एक स्वच्छ समाधान के लिए दायर किया गया जो मेरे लिए लगभग पूरी तरह से काम करता है।JQuery Draggable और IFrames (समाधान) पर आकार बदलने योग्य

मैंने सोचा कि मैं किसी और के लिए अपने निष्कर्ष साझा करूंगा, क्या उन्हें इस मुद्दे पर भी आना चाहिए।

मेरे पास एक div है जिसमें IFrame है। यह div आकार बदलने योग्य और खींचने योग्य होना चाहिए। काफी सरल - तो जैसे div को खींचने योग्य और आकार बदलने योग्य jQuery जोड़ें:

$("#Div").draggable(); 
$("#Div").resizable(); 

सभी ठीक जब तक आप एक iframe युक्त एक और div के ऊपर खींच सकते हैं या अपने वर्तमान div आकार बदलने के लिए, अपने वर्तमान iframe से अधिक ले जाकर कोशिश है। एक आईफ्रेम पर जब दोनों कार्य रोकें।

समाधान:

$("#Div").draggable({ 
    start: function() { 
     $(".AllContainerDivs").each(function (index, element) { 
     var d = $('<div class="iframeCover" style="zindex:99;position:absolute;width:100%;top:0px;left:0px;height:' + $(element).height() + 'px"></div>'); 
     $(element).append(d);}); 
    }, 
    stop: function() { 
     $('.iframeCover').remove(); 
    } 
}); 



$("#Div").resizable({ 
    start: function() { 
     $(".AllContainerDivs").each(function (index, element) { 
      var d = $('<div class="iframeCover" style="z-index:99;position:absolute;width:100%;top:0px;left:0px;height:' + $(element).height() + 'px"></div>'); 
      $(element).append(d); 
     }); 
    }, 
    stop: function() { 
     $('.iframeCover').remove(); 
    } 
}); 

का आनंद लें!

पुनश्च: कुछ अतिरिक्त कोड खिड़कियां, जो जब चुना जाता है, अन्य draggables के सामने में लाया जाता है बनाने के लिए:

खींचने योग्य शुरू समारोह में -

var maxZ = 1; 
$(".AllContainerDivs").each(function (index, element) { 
    if ($(element).css("z-index") > maxZ) { 
     maxZ = $(element).css("z-index"); 
    } 
}); 
$(this).css("z-index", maxZ + 1); 
+0

में चारों ओर पहले से ही था, इसलिए आप इस या कुछ और के एक jsfiddler है मैं इसे संदर्भ में देख सकता हूं? मुझे यकीन नहीं है कि आपके एचटीएमएल सेटअप कैसे हैं, इसलिए आपके चयनकर्ता मुझे कोई समझ नहीं लेते हैं। धन्यवाद – bladefist

+0

हे। इतना आसान और अभी तक बहुत अच्छा काम करता है –

+0

इसके अलावा JQuery UI संवाद पृष्ठ पर फ़्लोटिंग आईफ्रेम प्राप्त करने का एक बहुत ही आसान तरीका है :) – daitangio

उत्तर

3

तरीकों की एक संख्या हैं इसे प्राप्त करने के लिए, सभी आपकी आवश्यकताओं के आधार पर। मुझे लगता है कि कई खिड़कियों का आकार बदलना/खींचना यूआई को बहुत धीमा कर देता है, और इस तरह मैंने नेविगेशन की सहायता के लिए सीमा के साथ आकार बदलने/खींचने के लिए आइफ्रेम छिपाने को समाप्त कर दिया।

कुछ jquery प्लगइन्स हैं जो इस कार्यक्षमता का हिस्सा प्राप्त करते हैं, लेकिन iframes के साथ कई संघर्ष।

सामने लाने के लिए भी अंक पर सुधार किया जा सकता है और सभी स्थितियों में काम नहीं कर सकता है।

$('#Div').draggable({ iframeFix: true }); 

यह काम करना चाहिए:

+0

यह मेरे लिए पूरी तरह से काम करता है, '$ (' iframe ') पर एक साधारण कॉल। टॉगल() 'चालू 'स्टार्ट' और 'स्टॉप' (उन कॉलबैक को सेट करने के उदाहरणों के लिए अन्य उत्तरों देखें) सब कुछ जरूरी है। – Grimeh

13

इस प्रयास करें।

+0

यह पहली चीज थी जिसकी मैंने कोशिश की थी और यह कई स्थितियों में विफल रहता है, मुझे यकीन नहीं है कि क्यों, क्योंकि अनिवार्य रूप से यह वही है जिसे मैंने लागू किया है। – Bob

+0

मेरे लिए काम किया, धन्यवाद –

+0

वास्तव में यह किसी कारण से ड्रैग करने योग्य तत्व के भीतर लिंक अक्षम कर दिया गया है, इसके बजाय इसे समाप्त कर दिया: http://stackoverflow.com/a/5646590/1342440 –

1

मैं पहली बार भी बायरन कॉब के समाधान की तरह चला गया, लेकिन जैसा कि मैंने एक संवाद तत्व उपयोग कर रहा हूँ और Iframe की जरूरत नहीं है जब संवाद नहीं दिखाया जाता है (यह एक बचत संवाद है), मैं modal विकल्प का उपयोग कर इसे पसंद किया:

$('#savingDialog').dialog({ 
    modal: true 
}); 
2

इतना कठिन क्यों? वहाँ बहुत अधिक सुंदर समाधान है:

  • कुछ z- सूचकांक के साथ रिश्तेदार div के अंदर अपने आइफ्रेम शब्दों में कहें, 0
  • मेकअप आइफ्रेम रिश्तेदार भी कहना है और बदल खींच दौरान यह z- सूचकांक -1 है:

कोड:

$("#Div").draggable({ 
    start: function() { 
     $("iframe").css('z-index', '-1'); 
    }, 
    stop: function() { 
     $("iframe").css('z-index', '0'); 
    } 
}); 
3

क्या मेरे द्वारा की गई body.dragging iframe {pointer-events: none;} को परिभाषित तो dragstart घटना पर शरीर के लिए dragging वर्ग जोड़ सकते हैं और dragend घटना पर इसे हटाने है।

मेरे लिए ठीक, यकीन नहीं काम करता है कारण है कि यह पहले उल्लेख नहीं किया गया था, जहाँ तक मैं सूचक-घटनाओं बता सकते हैं सीएसएस संपत्ति 2010

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