2012-09-02 15 views
6

इस डेमो पृष्ठ पर: http://jqueryui.com/demos/slider/#event-changeJquery यूआई: रेंज स्लाइडर। कौन सा स्लाइडर स्थानांतरित हो गया है?

घटना 'स्लाइड' पुनर्लेखन दो बार में आदानों है:

$("#amount").val("$" + $("#slider-range").slider("values", 0) + 
      " - $" + $("#slider-range").slider("values", 1)); 

मेरी प्रयोजनों मैं जानना चाहता हूँ, के लिए दो स्लाइडर का जो ले जाया जाता है (न्यूनतम या अधिकतम) । मैं इसे कैसे प्राप्त कर सकता हूं?

+0

_min या max_? क्या आप विस्तार से समझा सकते हैं? – undefined

+0

क्या आप दो स्लाइडर्स के बारे में पूछ रहे हैं, प्रत्येक एक हैंडल के साथ, या दो हैंडल (एक "रेंज" स्लाइडर) वाला एक स्लाइडर? –

+1

मैट बॉल, मैं दो हैंडल के साथ एकल स्लाइडर के बारे में पूछ रहा हूं। – Nikoole

उत्तर

5

@Nikoole, वहाँ कोई विशिष्ट विधि है जो संभाल फिसलने है मिल रहा है, लेकिन आप इस चाल

var minSlide = 75, maxSlide = 300; 
$("#slider-range").slider({ 
    range: true, 
    min: 0, 
    max: 500, 
    values: [ 75, 300 ], 
    slide: function(event, ui) { 
     if(minSlide != parseInt(ui.values[0], 10)){ 
      // Do what in minimum handle case 
     } 
     else if(maxSlide != parseInt(ui.values[1], 10)) { 
      // Do what in maximum handle case 
     } 
    }, 
    stop: function(event, ui){ 
     minSlide = parseInt(ui.values[0], 10); 
     maxSlide = parseInt(ui.values[1], 10);    
    } 
}); 

आशा इस में मदद मिलेगी की कोशिश कर सकते।

+0

parseInt का उपयोग करते समय रेडिक्स को न भूलें। – j08691

+0

धन्यवाद @ j08691, मैं तदनुसार अपना उत्तर अपडेट करूंगा। –

+0

कुंदन सिंह चौहान, बहुत धन्यवाद! क्या आपका मतलब है: 'और अगर (** maxSlide **! = ParseInt (ui.values ​​[1], 10)) { // अधिकतम हैंडल केस } ' – Nikoole

8

यहां तक ​​कि मुझे हाल ही में एक ही समस्या का सामना करना पड़ा। एक रेंज स्लाइडर का उपयोग करते समय, आपको यह निर्धारित करने की आवश्यकता है कि कौन सा स्लाइडर (दाएं या बाएं) स्थानांतरित किया गया था। कोई निर्धारित यह निर्धारित करने के लिए कोई तरीका नहीं है, लेकिन हालांकि, ui ऑब्जेक्ट में विशेषताएँ हैं, value और values जो आप यह निर्धारित करने के लिए उपयोग कर सकते हैं कि कौन सा स्लाइडर स्थानांतरित किया गया था। यहाँ समाधान है कि मेरे लिए काम किया है: -

 $("#slider-range").slider({ 
     range: true, 
     min: 75, 
     max: 300, 
     values:[75,300], 
     slide: function(event, ui) { 
     target_name = '' 
     if(ui.values[0] == ui.value) target_name = 'min_price' 
     else if(ui.values[1] == ui.value) target_name = 'max_price' 
     alert(target_name) 
     } 
1

मैं स्लाइडर एपीआई http://api.jqueryui.com/1.8/slider/#event-create द्वारा परिभाषित घटना बनाने पर ID विशेषता के लिए न्यूनतम और अधिकतम चयनकर्ताओं सेट करके ऐसा हल किया।

  create:function(event, ui) 
     { 
     var handlers = $('.ui-slider-handle'); 
     $.each(handlers, function(i, element) 
     { 
      if(i == 0) 
       $(element).attr('id', 'slider-handler-min'); 
      else 
       $(element).attr('id', 'slider-handler-max'); 
     }); 
     } 

... और फिर मेरे slide स्थिति में वापस मैं ui.handler से बस लाल आईडी विशेषता जो एक बढ़ रहा है पाने के लिए :)

+0

मुझे आपका समाधान पसंद है, लेकिन यदि पृष्ठ पर एक से अधिक स्लाइडर हैं तो ID का उपयोग करके संघर्ष होगा। मैं इसके बजाए एक कक्षा जोड़ने का सुझाव दूंगा। यह एक स्लाइडर को अधिकतम और न्यूनतम वर्ग की अनुमति भी दे सकता है, और इसलिए एकल और श्रेणियों के लिए अलग-अलग कोड करने से बचें। – pperrin

11

सही स्लाइडर हैंडलर स्लाइडर कंटेनर की अंतिम संतान है, इसलिए, के विपरीत बाएं हैंडलर, दाएं हैंडलर के पास अगला नहीं है:

$('#slider-range').slider({ 
    range: true, 
    min: 0, max: 500, 
    values: [ 75, 300 ], 
    slide: function(event, ui) { 
     if (ui.handle.nextSibling) { 
      // Moving LEFT slider ... 
     } else { 
      // Moving RIGHT slider ... 
     } 
    } 
}); 
+1

सुंदर समाधान! 'वापसी झूठी 'स्थिति के लिए सही काम किया .. धन्यवाद! – kingkode

+0

जो सबसे तेज़ समाधान है! – Nikit

3

स्लाइड ईवेंट दो पैरामीटर लेता है: ईवेंट और ui। ui में हैंडल ऑब्जेक्ट होता है। आप इस तरह के हैंडल की अनुक्रमणिका तक पहुंच और परीक्षण कर सकते हैं:

$("#slider-range").slider({ 
    range: true, 
    min: 0, 
    max: 500, 
    values: [ 75, 300 ], 
    slide: function(event, ui) { 
     var index = $(ui.handle).index(); 
     if (index == 1) { 
      // do stuff for minimum 
     } 
     if (index == 2) { 
      // do stuff for maximum 
     } 
    } 
}); 

यह किसी दिए गए स्लाइडर में हैंडल की किसी भी संख्या के लिए काम करता है। लेकिन ध्यान दें कि इंडेक्स 1 से 0 0 पर शुरू होते हैं।

+0

अंततः एक महान जवाब !!! मैं इसे हमेशा के लिए देख रहा था। आपको इंडेक्स फ़ंक्शन कहां मिला ?? – Kulpemovitz

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