2012-04-21 7 views
7

मुझे एक स्लाइडर मिला जो मेरे संगीत प्लेयर में टाइम-लाइन के रूप में उपयोग किया जाता है। न्यूनतम मान 0 है और अधिकतम vlaue गीत लंबाई (सेकंड में) है। प्रत्येक दूसरा (मैं इसे टाइमर के साथ करता हूं), स्लाइडर चलता है और मान वर्तमान समय पर सेट होता है। इस कोड को लाइन है कि तरह लग रहा है:jQuery स्लाइडर "परिवर्तन" घटना: मैं यह कैसे निर्धारित करूं कि इसे किसने बुलाया?

$("#sliderTime").slider("option", "value", document.sound.controls.currentPosition); 

उपयोगकर्ता स्लाइड/स्लाइडर क्लिक करें और गीत में एक और बात करने के लिए कूद करने में सक्षम है, इस समारोह 'प्ले (startPlayFromHere)' फायरिंग कर रहा है। ऐसा नहीं है कि तरह लग रहा है:

$("#sliderTime").slider({ 
    ... 
    change: function (event, ui) { play(ui.value) }, 
}); 

समस्या यह है कि दोनों टाइमर और उपयोगकर्ता में कोड लाइन स्लाइडर का एक ही 'परिवर्तन' घटना बुला रहे हैं, और उपयोगकर्ता स्लाइडर स्थानांतरित नहीं कर सकते है।

तो मेरा सवाल यह है कि मैं कैसे निर्धारित कर सकता हूं कि उपयोगकर्ता ने परिवर्तन ईवेंट कहा है या नहीं (इसका मतलब है कि यह टाइमर था)?

मुझे उम्मीद है कि यह पर्याप्त स्पष्ट है, धन्यवाद!

उत्तर

21

आप यह निर्धारित कर सकते हैं कि चेंज हैंडलर में event.originalEvent का परीक्षण करके एक परिवर्तन घटना मैन्युअल रूप से या प्रोग्रामेटिक रूप से उत्पन्न हुई है या नहीं।

$('#slider').slider({ 
    change: function(event, ui) { 
     if (event.originalEvent) { 
      //manual change 
      play(ui.value); 
     } 
     else { 
      //programmatic change 
     } 
    } 
}); 

fiddle देखें।

+0

धन्यवाद! अब मुझे एक और मुद्दा मिला: जब उपयोगकर्ता स्लाइड करने का प्रयास करता है, टाइमर अभी भी स्लाइडर को काम करता है और स्लाइड करता है। तो कभी-कभी स्लाइडर मूल स्थिति पर वापस जाता है और उपयोगकर्ताओं के कॉल को अनदेखा करता है। – eviabs

+1

इसे लिखने का कोई समय नहीं है लेकिन आप एक फ्लैग बढ़ाने के लिए 'स्टार्ट' हैंडलर (देखें [दस्तावेज़ीकरण] (http://jqueryui.com/demos/slider/)) संलग्न कर सकते हैं (टाइमर कोड के इसी समायोजन के साथ)) स्लाइडर का टाइमर नियंत्रण। 'चेंज' हैंडलर में ध्वज को दोबारा कम करें। (वैकल्पिक रूप से, टाइमर को रोकें, फिर इसे पुनरारंभ करें)। –

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