मैंने उपयोगी 'मोबाइल' ईवेंट (available here) की लाइब्रेरी लिखी है। यह अनिवार्य रूप से स्पर्श घटनाओं को एकजुट करता है ताकि एक भी घटना को तत्व के लिए बाध्य किया जा सके, और यह उपयोगकर्ता के डिवाइस (यानी मोबाइल या डेस्कटॉप) पर ध्यान दिए बिना ट्रिगर होगा।
कोड अच्छी तरह से काम कर रहा है, लेकिन उपयोगकर्ता की समस्या को डीबग करते समय, मैंने देखा कि लाइब्रेरी अब काम नहीं करती है जब jQuery 1.9.0 का उपयोग किया जाता है (jQuery के सभी पिछले संस्करणों में समस्या नहीं होती है)।
समस्याग्रस्त कोड इस प्रकार है:
// Add Event shortcuts:
$.each(('tapstart tapend tap singletap doubletap taphold swipe swipeup swiperight swipedown swipeleft scrollstart scrollend orientationchange').split(' '), function(i, name) {
$.fn[name] = function(fn)
{
return fn ? this.bind(name, fn) : this.trigger(name);
};
$.attrFn[name] = true;
});
निम्न पंक्ति पर त्रुटि Uncaught TypeError: Cannot set property 'tapstart' of undefined
:
$.attrFn[name] = true;
किसी को भी इस के लिए एक ठीक उत्पादन की दिशा में मुझे बात कर सकते हैं?
मैं एक साथ डाल दिया है 2 jsFiddle क़ौम समस्या को दिखाने के लिए:
- Working version
- Non-working version (का उपयोग कर jQuery 1.9.0)
(jQuery 1.8.3 का प्रयोग करके) अगर मैं परिभाषित $.attrFn
, यह swipe*
घटनाओं के लिए कोड को हल करता है, लेकिन फिर tap
और doubletap
जैसे अन्य लोगों के साथ समस्याएं पैदा करता है। Uncaught TypeError: Cannot call method 'call' of undefined
, समस्याग्रस्त लाइन किया जा रहा है के साथ:
$.event.handle.call(obj, event);
एक बार फिर, वहाँ संदर्भ के लिए दो jsFiddles हैं:
- Working version (jQuery 1.8.3 का प्रयोग करके) उदाहरण के लिए, बाध्यकारी
- Non-working version (
$.attrFn = $.attrFn || {};
ठीक साथ jQuery 1.9.0 का उपयोग कर)
tap
अब त्रुटि पैदा करता है
आप 1.8 स्रोत कोड की जांच करते हैं, यह बहुत स्पष्ट :-) – Pointy