मैं एक आईओएस वेबकिट आधारित ऐप के लिए एक मेनू को कार्यान्वित करने की कोशिश कर रहा हूं जिसमें उपयोगकर्ता छूता/क्लिक करता है और मेन्यू बटन ('.menu_item') रखता है, 500ms उप मेन्यू खोलने के बाद (div.slide_up_sub_menu), और उपयोगकर्ता अपनी उंगली/माउस को उपमेनू ली आइटम तक छोड़ने और रिलीज़ करने में सक्षम होना चाहिए।आईओएस वेबकिट में टचचेंड इवेंट फायरिंग नहीं?
<li class="menu_item">
ASSET MANAGEMENT
<div class="slide_up_sub_menu hidden_menu">
<ul class="submenu">
<li>Unified Naming Convention</li>
<li>Version Control</li>
</ul>
</div>
</li>
एप्लिकेशन को यह पता लगाने में सक्षम होना चाहिए कि कौन सा सबमेनू आइटम टचचेन्ड/माउसअप ईवेंट चालू हुआ। मैं मेन्यू आइटम में टचस्टार्ट इवेंट बाध्य कर रहा हूं, 500 एमएमएस की प्रतीक्षा कर रहा हूं, और बाद में सबमेनू को दिखाने के लिए कह रहा हूं। जब कोई उपयोगकर्ता अपनी उंगली जारी करता है तो एक टचेंड ईवेंट को सबमेनू को बंद करना बंद कर देना चाहिए। यदि उपयोगकर्ता ने उपमेनू आइटम पर अपना स्पर्श बंद कर दिया है तो इसे पता लगाया जाना चाहिए। वर्तमान में पता लगाने के जो सबमेनू आइटम की एक mouseup घटना कार्यों पर सफारी में डेस्कटॉप पर हुआ:
$('ul.submenu li').live('mouseup', function(e){
console.log($(e.currentTarget)); //works on the desktop
});
लेकिन अगर मैं एक ही एक touchend हैंडलर यह एक iPad पर काम नहीं करता का उपयोग कर कार्य करें:
$('ul.submenu li').live('touchend', function(e){
console.log($(e.currentTarget)); //never fires
});
अगर मैं हर touchend घटना के लिए लग रही है जब मैं एक सबमेनू आइटम पर स्पर्श अंत मैं माता पिता के उप मेनू आइटम के लिए एक संदर्भ प्राप्त कर सकते हैं:
$(document.body).bind('touchend', function(e) {
console.log($(e.target).html()); //logs ASSET MANAGEMENT
});
लेकिन सबमेनू आइटम के लिए कोई संदर्भ।
क्या किसी को भी कोई विचार है कि उपमेनू वस्तुओं पर टचेंड ईवेंट क्यों नहीं निकाला जा रहा है?
धन्यवाद
उत्तर के लिए धन्यवाद roee, दुर्भाग्यवश, जब आप स्क्रीन को स्पर्श करते हैं तो mousedown ईवेंट तुरंत आग नहीं होता है। यह आपकी अंगुली को माउसअप ईवेंट के साथ स्क्रीन में छोड़ने के बाद ही आग लगती है। http://www.quirksmode.org/blog/archives/2008/08/iphone_events.html – Craig