2011-11-15 7 views
8

मैं JQueryUI आकार में पहलू अनुपात को गतिशील रूप से चालू/बंद करने की कोशिश कर रहा था, हालांकि झूठी विकल्प को सेट करने के बाद भी, यह पहलू अनुपात को बनाए रखता है। नीचे दिए गए कोड मैं वर्तमान के साथ काम कर रहा हूँ है:आरंभ करने के बाद JqueryUI Resizable AspectRatio को लागू करने में असमर्थ?

$('#aspect_check').click(function() { 
    var ischecked = $('#aspect_check').prop('checked'); 
    if (ischecked) { 
    $("#resizable").resizable("option", "aspectRatio", .75); 
    } else { 
     $("#resizable").resizable("option", "aspectRatio", false); 
    } 
}); 

मैं 3 साल पहले से एक बग रिपोर्ट है, जो लगता है कि यह अभी भी यह महत्वपूर्ण अंकन के बावजूद तय नहीं किया गया है पाया। http://bugs.jqueryui.com/ticket/4186

कामकाज नवीनतम संस्करणों के साथ काम नहीं करते हैं। कोई विचार?

संपादित करें:

$(function() { 
$.extend($.ui.resizable.prototype, (function (orig) { 
    return { 
     _mouseStart: function (event) { 
      this._aspectRatio = !!(this.options.aspectRatio); 
      return(orig.call(this, event)); 
     } 
    }; 
})($.ui.resizable.prototype["_mouseStart"])); 
}); 

अपने जावास्क्रिप्ट स्क्रिप्ट खंड में चिपकाएं: बग रिपोर्ट की एक बहुत कुछ अध्ययन करने के बाद यहां के चारों ओर एक काम है। उम्मीद है कि यह किसी भी समस्या के साथ किसी की मदद करता है!

+0

काम करता है संपादित करें आपका आता है! धन्यवाद – willDaBeast

+0

कामकाज केवल सकारात्मक 'मूल स्थिति' के साथ काम करता है। कोई विचार यह कैसे नकारात्मक मूल्य के साथ काम करने के लिए? – Core972

उत्तर

1

मुझे नहीं पता कि यह काम करेगा या क्या होगा। लेकिन आप इस तरह कुछ कोशिश कर सकते हैं।

$(function(){ 
    var settings = { 
     aspectRatio : .75 
    }; 
    $("#tadaa").resizable(settings); 

    $("input").change(function(){ 
     if($(this).is(":checked")) 
     { 

      $("#tadaa").resizable("destroy"); 
      $("#tadaa").resizable(); 
     } 
     else 
     { 
      $("#tadaa").resizable("destroy"); 
      $("#tadaa").resizable(settings); 
     } 
    }); 
}); 

लाइव डेमो, वर्तमान में केवल नीचे खींचे जाने योग्य तत्व का उपयोग करने के स्टाइल है, क्षैतिज div स्टाइल नहीं है।

http://jsfiddle.net/t6xFN/1/

+0

प्रतिक्रिया @Niels के लिए धन्यवाद, उदाहरण हालांकि काम नहीं कर रहा है :(। यह इसे मैन्युअल रूप से सेट करने का एक ही प्रभाव दिखाता है। हालांकि बग रिपोर्ट के घंटों के माध्यम से जाने के बाद, मुझे अंत में एक और काम मिल गया। मैंने अपना अपडेट किया है एक ही जूता में दूसरों के लिए इसके साथ मूल प्रश्न। धन्यवाद फिर से! – Alvin

2

मुझे लगता है कि यह एक पुरानी पोस्ट है, लेकिन इस मामले में किसी को अब भी एक जवाब की जरूरत है आप इसे इस प्रकार कर सकते हैं:

$('#aspect_check').click(function() { 
    var ischecked = $('#aspect_check').prop('checked'); 
    if (ischecked) { 
     $("#resizable").resizable({aspectRatio : .75}); 
    } else { 
     $("#resizable").resizable(); 
    } 
}); 
0

एक अन्य समाधान एक चर में आकार बदलने योग्य विकल्पों को बचाने के लिए है और अद्यतन विकल्पों के साथ नष्ट करने और reinitialize विजेट:

var options = $("#resizable").resizable("options"); 
if (ischecked) { 
    options.aspectRatio = .75; 
} else { 
    options.aspectRatio = false; 
} 
$("#resizable").resizable("destroy"); 
$("#resizable").resizable(options); 
10

यह कोई पैच

साथ मेरे लिए काम किया
$('#resizable') 
    .resizable('option', 'aspectRatio', false) 
    .data('uiResizable')._aspectRatio = false; 

इस भाग .data('uiResizable')._aspectRatio = false; बचाव के लिए

+1

उत्कृष्ट हैक, यह मुझे किसी समस्या से बाहर ले जाता है! – Erick

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