2013-01-19 11 views
6

मेरे सूचकांक पृष्ठ पर मेरे पास एक बहुत ही सरल उपयोग केस है।सभी jQuery मोबाइल घटनाएं दो बार गोलीबारी कर रही हैं

 <script src="js/jquery-min.js"></script> 
     <script src="js/jquery-mobile.js"></script> 
     <script type="text/javascript" src="cordova-2.2.0.js"></script> 

     <script> 
       $("body").on("swipeleft", function(event) { 
       alert('hello'); 
       /*window.location.href = "html/first.html";*/    
      }); 
     </script> 

किसी कारण से यह घटना 2 बार गोलीबारी कर रही है। अब मुझे यकीन है कि मैंने बॉडी टैग पर एक और घटना नहीं बांधी है क्योंकि यह पहला पृष्ठ है। मैंने टचस्टार्ट इत्यादि जैसी अन्य सरल घटनाओं की भी कोशिश की है। वे सभी दो बार फायरिंग कर रहे हैं। मैं क्या गलत कर रहा हूं ?

अपडेट: -

मैं इस सवाल का जवाब मैं निम्नलिखित तरीके से सही के रूप में चिह्नित संशोधित किया है और यह काम किया। इस पृष्ठ पर घटनाएं दो बार फायरिंग नहीं कर रही हैं।

<head> 
     <script type="text/javascript" src="js/jquery-min.js"></script> 
      <script> 
       $(document).bind("mobileinit", function() { 
         $.mobile.autoInitializePage = false; 
         $.mobile.defaultPageTransition = 'none'; 
         $.mobile.touchOverflowEnabled = false; 
         $.mobile.defaultDialogTransition = 'none'; 
         $.mobile.loadingMessage = '' ;     
        }); 
      </script> 
      <script type="text/javascript" src="js/jquery-mobile.js"></script> 
      <script type="text/javascript" src="cordova-2.2.0.js"></script> 
</head> 
+0

@ Floradu88: आप सही है कि के लिए खेद है। मैं कुछ समाधानों की कोशिश कर रहा था लेकिन अभी तक सही जवाब नहीं मिला है। लेकिन मैं जिस पर काम कर रहा हूं उसे चिह्नित करूंगा। –

+0

आपको केवल सही उत्तरों को चिह्नित करना चाहिए, एक उत्तर को चिह्नित न करें जो सही नहीं है –

+0

हां, लेकिन जिसने मैंने सही चिह्नित किया है, उसमें कुछ बदलावों के साथ काम किया है। मैं तदनुसार जवाब अपडेट करूंगा। –

उत्तर

14

वहाँ कुछ कर रहे हैं इस समस्या से बचने के तरीके। CodeJack की तरह आपको बताया गया कि यह एक ज्ञात मुद्दा है, लेकिन यह एक त्रुटि नहीं है, मुख्य रूप से jQM पृष्ठों को संभालने का अनोखा तरीका।

  • सबसे आसान एक फिर से यह बाध्यकारी से पहले एक घटना निकल करने के लिए, इस तरह है:

    $("body").off().on("swipeleft", function(event) { 
        alert('hello'); 
        /*window.location.href = "html/first.html";*/    
    }); 
    

    मामले में आप अन्य घटनाओं का उद्देश्य एक ही उपयोग इस के लिए बाध्य कर दिया है:

    $("body").off("swipeleft").on("swipeleft", function(event) { 
        alert('hello'); 
        /*window.location.href = "html/first.html";*/    
    }); 
    
  • ईवेंट बाइंड/अनबिंड, लाइव/डाई और चालू/बंद करने का विकल्प है। इससे पहले कि आप इसे फिर से बांधने से पहले अनइंडिंग करने के बजाय jQuery ईवेंट फ़िल्टर का उपयोग करें, यह पहचानने के लिए उपयोग किया जा सकता है कि ईवेंट पहले से ही बांध रहा है या नहीं। इसे नीचे पोस्ट किए गए लिंक से डाउनलोड करना न भूलें (यह jQM का मानक हिस्सा नहीं है)।

    $('#carousel div:Event(!click)').each(function(){ 
        //If click is not bind to #carousel div do something 
    }); 
    

    मैं प्रत्येक क्योंकि मेरे हिंडोला div कई भीतरी ब्लॉक हैं लेकिन सिद्धांत एक ही है उपयोग कर रहा हूँ:

    http://www.codenothing.com/archives/2009/event-filter/

    यह मेरा उपयोग उदाहरण है। यदि #carousel आंतरिक div तत्वों में क्लिक ईवेंट नहीं है तो उन्हें उस ईवेंट को जोड़ें। आपके मामले में यह कई घटना बाध्यकारी को रोक देगा।

अतिरिक्त समाधान here पाया जा सकता है।

+0

ऐसा लगता है कि पूरी तरह से बहुत धन्यवाद ... !!! –

1

यह जाना जाता है मुद्दा ... मैं यह पाया <head> अंदर js कोड को ले जाकर से बचने के लिए tag..i donno reason..but है कि समस्या से बचा ...

4

आपको घटनाओं को शरीर में संलग्न करने के लिए दस्तावेज़ तैयार ईवेंट का उपयोग करने का प्रयास करना चाहिए। इसके अलावा आप एक घटना को केवल शरीर में संलग्न करना चाह सकते हैं।

$(document).ready(function(){ 
    $("body").off().on("swipeleft", function(event) { 
     alert('hello');   
    }); 
}); 

मामले में आप एक ही वस्तु उपयोग करने के लिए बाध्य अन्य घटनाओं है इस:

$(document).ready(function(){ 
    $("body").off("swipeleft").on("swipeleft", function(event) { 
     alert('hello');   
    }); 
}); 
संबंधित मुद्दे

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