2009-03-22 17 views
6

मैं अपने PhoneGap ऐप में लिंक पर लाइव इवेंट बाध्य कर रहा हूं। घटना सफलतापूर्वक आग लगती है (alert() आईएनजी द्वारा पुष्टि की गई), लेकिन ऐसा लगता है कि किसी भी स्पर्श डेटा ईवेंट ऑब्जेक्ट से जुड़ा हुआ नहीं है जैसा कि होना चाहिए। यह सभी स्पर्श घटनाओं पर होता है - touchstart, touchmove, और touchendjQuery लाइव() आईफोन स्पर्श घटना विशेषताओं को हटा रहा है?

$('a').live('touchend', function(event) { 
    event.preventDefault(); 
    alert(event.touches.length); // event.touches should be populated! 
}); 

कोई विचार? क्या मैं jQuery.live() के साथ एसओएल हूँ?

उत्तर

2

स्पर्श ईवेंट वर्तमान में Events/live द्वारा समर्थित नहीं हैं।

प्रलेखन से:

संभावित घटना मान: क्लिक करें, dblclick, mousedown, mouseup, MouseMove, माउसओवर, mouseout, keydown, कुंजी दबाने, KeyUp

वर्तमान में समर्थित नहीं: कलंक, ध्यान, mouseenter, mouseleave, परिवर्तन, प्रस्तुत

आप अगर क्लिक करें का उपयोग करने की कोशिश कर विचार करना चाह सकते जो आपकी आवश्यकताओं के अनुरूप होगा, या आप livequery का उपयोग करने के लिए स्विच कर सकते हैं, जो शायद इसका समर्थन करेगा। (लाइवक्वरी जो मूल रूप से आधारित थी, मुझे यकीन नहीं है कि यह सभी घटनाओं का समर्थन क्यों नहीं करता है)

+0

मैं livequery बाहर की कोशिश करेंगे धन्यवाद:

$('a').live('touchend', function(event) { event.preventDefault(); console.log(event.originalEvent.touches.length); }); 

यहाँ गुण है कि उन पर कॉपी कर रहे हैं। स्पर्श घटनाओं को पकड़ा जा रहा था ठीक है कि वे काफी समर्थित थे, लेकिन मुझे लगता है कि सभी घटना विशेषताओं के साथ पास करने के लिए कुछ अतिरिक्त होना है। – ceejayoz

+0

मेरा मानना ​​है कि लाइवक्वियर टाइमर का उपयोग करता है और यही कारण है कि यह बहुत अधिक समर्थन कर सकता है। JQuery टीम ने एक अलग विधि का उपयोग किया जो अधिक कुशल है, लेकिन सीमित भी है। – Jab

16

वास्तव में, आप .live विधि का उपयोग कर सकते हैं। आपके पास event.touches प्रॉपर्टी नहीं है क्योंकि jQuery आंतरिक रूप से ईवेंट कैसे संभालता है। घटनाओं को "ठीक करने" के लिए, jQuery घटना को क्लोन करता है। ऐसा करने में, यह केवल प्रदर्शन कारणों से सीमित संख्या में गुणों की प्रतिलिपि बनाता है। हालांकि, आप अभी भी event.originalEvent प्रॉपर्टी के माध्यम से मूल ईवेंट ऑब्जेक्ट तक पहुंच सकते हैं।

तो अपने उदाहरण कोड ऐसा दिखाई देगा करने की आवश्यकता होगी:, http://github.com/jquery/jquery/blob/master/src/event.js#L411

+0

यह नया jQuery 1.4 में सच प्रतीत होता है। यह 1.3 में मामला नहीं था। – ceejayoz

+1

jQuery 1.3.x का एक ही व्यवहार था, सामान्य गुणों की एक निश्चित संख्या पर प्रतिलिपि बनाने और मूल घटना को मूल मूल संपत्ति के रूप में बेनकाब करने के लिए। प्रासंगिक स्रोत: http://github.com/jquery/jquery/blob/1.3/src/event.js#L282 –

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