में डबल क्लिक करते समय फायरिंग एकल क्लिक ईवेंट को कैसे रोकें मेरे पास एक पेड़ पैनल है और प्रत्येक नोड के लिए मेरे पास एक क्लिक है और डबल क्लिक ईवेंट हैं। लेकिन जब मैं डबल क्लिक करता हूं तो यह एक क्लिक ईवेंट को भी फायर कर रहा है। तो डबल क्लिक होने पर फायरिंग सिंगल क्लिक इवेंट को कैसे रोकें?extjs
extjs
उत्तर
आम तौर पर का उपयोग करके एकल क्लिक और डबल क्लिक ईवेंट को एक खराब अभ्यास और अत्यधिक निराश माना जाता है।
हालांकि, यदि आप अभी भी ऐसा करना चाहते हैं, तो एकल क्लिक और डबल क्लिक के बीच अलग-अलग करने में सक्षम होने का एकमात्र तरीका कृत्रिम रूप से क्लिक के बीच समय को मापकर इस भेद को जोड़ना है।
विचार यह है कि आप तुरंत अपनी एकल-क्लिक कार्रवाई नहीं करते हैं लेकिन दूसरे क्लिक के लिए प्रतीक्षा करें। यदि दूसरा क्लिक जल्द ही आता है, तो आपकी डबल क्लिक कार्रवाई ट्रिगर हो जाती है। अन्यथा देरी के बाद आपकी एकल क्लिक कार्रवाई ट्रिगर हो जाती है।
आपका कोड कुछ ऐसा दिखाई देगा की तरह:
var singleClickTask = new Ext.util.DelayedTask(singleClickAction), // our delayed task for single click
singleClickDelay = 100; // delay in milliseconds
function onClick() {
singleClickTask.delay(singleClickDelay);
}
function onDblClick() {
// double click detected - trigger double click action
doubleClickAction();
// and don't forget to cancel single click task!
singleClickTask.cancel();
}
function singleClickAction() {
// something useful...
}
function doubleClickAction() {
// something useful...
}
// setting event handlers on an Element
elem.on('click', onClick);
elem.on('dblclick', onDblClick);
स्पष्ट कमियां हैं:
- एक अलग सेटिंग हो सकता है एक सिंगल क्लिक कार्रवाई
- अलग ओएस में के लिए एक का विलंब होगा डबल क्लिक को ट्रिगर करने वाले क्लिक के बीच अंतराल के लिए, हार्ड-कोडिंग सिंगलक्लिकडेले विश्वसनीय नहीं है
- जावास्क्रिप्ट टाइमर 100% सटीक नहीं है और परिणाम विभिन्न प्रदर्शन
मुझे कोई बेहतर समाधान नहीं पता है, और फिर, मैं आपको एक ही समय में एकल और डबल क्लिक दोनों का उपयोग करने से हतोत्साहित कर सकता हूं, यह आमतौर पर टूटा हुआ उपयोगकर्ता अनुभव होता है ।
मुझे लगता है कि दूसरे की बजाय पहले क्लिक ईवेंट पर कार्रवाई करना बेहतर है। आप एक बूलियन सेट करके ऐसा कर सकते हैं जिसे आप प्रत्येक क्लिक ईवेंट पर चेक करते हैं।
इस कोड को एक दृष्टिकोण का प्रदर्शन किया
onGridRowClick: function(view, record, item, index, e, eOpts) {
if (record._task_in_progress) {
return;
}
// Let the second click as part of the double click to be ignored
record._task_in_progress = true;
// Emulating async task here
setTimeout(function() {
record._task_in_progress = false;
}, 1000);
}
- 1. extJs gmappanel extJs पोर्टल
- 2. EXTJS
- 3. ExtJS
- 4. ExtJS
- 5. extjs
- 6. ExtJs
- 7. ExtJs
- 8. extjs
- 9. ExtJS
- 10. ExtJS: HTML फॉर्म को ExtJS
- 11. Extjs 3 to Extjs 4
- 12. Extjs स्टोर
- 13. ExtJs 4
- 14. ExtJS 4
- 15. क्या ExtJS
- 16. ExtJS श्रोता
- 17. Extjs formpanel
- 18. ExtJS GridPanel
- 19. ExtJS ग्रिड
- 20. ExtJS: मॉडल
- 21. EXTJS + ग्रिड
- 22. me.dockedItems ExtJS
- 23. ExtJS 4
- 24. Extjs ग्रिड
- 25. ExtJS संस्करण
- 26. ExtJS 4
- 27. extjs ग्रिड
- 28. ExtJS 4
- 29. ExtJS 4.0
- 30. ExtJS: Ext.grid.property.Grid