2011-05-10 11 views
6

मेरे पास जावास्क्रिप्ट और jquery (मोबाइल) में मेरा पहला प्रयास है लेकिन अब कुछ ऐसा हुआ है जिसे मैं हल नहीं कर सकता।शेष हाइलाइट किए गए बटन से कैसे रोकें

मेरे पास 4 बटन के साथ एक साधारण रूप है, जब किसी को एक आदेश पर क्लिक किया जाता है सर्वर (AJAX का उपयोग करके)। चीज इंटरफेस के साथ है, कि बटन क्लिक किया गया (लाइटग्रे से शुरू करने के लिए) नीला हो जाता है और इसकी मूल स्थिति में वापस नहीं आता है। यहां तक ​​कि जब कोई अन्य बटन क्लिक नहीं किया जाता है, तो कुछ क्लिक के बाद, सभी बटन नीले होते हैं।

Here is a link to a test page (ajax विकलांग आदेश के साथ)

और इस पृष्ठ है;

<div id="mainPageHaard" data-role="page"> 

    <div data-role="header" data-position="fixed"> 
     <a href="index.html" data-icon="arrow-l" data-iconpos="notext" >Back</a> 
     <h1>Haard</h1> 
     <a href="index.html" data-icon="home" data-iconpos="notext" >Home</a> 
    </div><!-- /header --> 

    <div data-role="content"> 
     <a id="btnHaardMax" data-role="button" data-icon="arrow-u">Maximaal</a> 
     <a id="btnHaardUp" data-role="button" data-icon="plus">Harder</a> 
     <a id="btnHaardDown" data-role="button" data-icon="minus">Zachter</a> 
     <a id="btnHaardMin" data-role="button" data-icon="arrow-d">Waakvlam</a> 
    </div><!-- /content --> 

    <div data-role="footer" data-position="fixed"> 
     <a href="#configPageHaard" data-role="button" data-rel="dialog" data-transition="pop" data-icon="gear" data-iconpos="notext">Config</a> 
    </div><!-- /footer --> 
</div><!-- /page --> 

और जावास्क्रिप्ट

$(document).ready(function() { 

    $("#btnHaardMax").click(function(){ 
     //SendEvent("Gashaard_MAX", 18); 
     return true; 
    }); 
    $("#btnHaardUp").click(function(){ 
     //SendEvent("Gashaard_UP", 18); 
     return true; 
    }); 
    $("#btnHaardDown").click(function(){ 
     //SendEvent("Gashaard_DOWN", 18); 
     return true; 
    }); 
    $("#btnHaardMin").click(function(){ 
     //SendEvent("Gashaard_MIN", 18); 
     return true; 
    }); 
    $("#btnHaardStart").click(function(){ 
     //SendEvent("Gashaard_START", 18); 
     return true; 
    }); 
    $("#btnHaardStop").click(function(){ 
     //SendEvent("Gashaard_STOP", 18); 
     return true; 
    }); 

}); 

मैं इसे कुछ मूर्ख होने के लिए संदेह है, लेकिन अगर किसी ने मेरे कोड

Thx में sillyness पर वास्तव में मुझे इंगित सराहना करेंगे!

उत्तर

2

लघु जवाब: आप माउस घटना onclick समाप्त हो गया है पर सीएसएस वर्ग ui-btn-active दूर करने के लिए की जरूरत है।

कैसे? तुम कहो?

$().ready(function(){ 
    $('some-selector').mousedown(function(){ 
     $('some-selector').addClass('ui-btn-active'); 
    }) 
    $('some-selector').mouseup(function(){ 
     $('some-selector').removeClass('ui-btn-active'); 
    }) 
    }) 
+0

जिसने मेरी समस्या को सीधे हल नहीं किया, लेकिन आपने मुझे '_removeClass (' ui-btn-active ')' पर ट्रिगर किया, और मुझे समाधान मिला। यह जेक-मोबाइल 1.0 ए 4 में एक बग से संबंधित है, इस पोस्ट को देखें [लिंक] (http://forum.jquery.com/topic/alpha-1-0a4-1-button-bug-active-theme-applied-and -रेमेन) – Tieske

+0

नहीं, मैंने कभी भी जेक-मोबाइल का उपयोग नहीं किया है, और मुझे नहीं पता कि आपके आवेदन की आंतरिक कार्यप्रणाली कैसे है। तो मैं केवल आपको एक सामान्य समाधान दे सकता था। इसलिए मैंने उत्तर दिया कि डोम/एचटीएमएल के अनुसार क्या किया जाना चाहिए, और यह एक उदाहरण प्रदान किया गया है कि यह jquery के साथ कैसे किया जा सकता है। वैसे भी, मुझे याद है कि मेरी यादृच्छिक कीप्रेस आपको जवाब देने के लिए प्रेरित करती हैं :) – netbrain

0

मैं से बचने के लिए, सुझाव है कि एक बार आप एक बटन दबाते हैं, तो आप इसे अक्षम AJAX कॉल पूरा कर लिया है जब तक आकस्मिक डबल दबा सकता है या अगर यह मतलब नहीं है फिर बटन दबाना है, छोड़ यह अक्षम चूंकि आपके बटन वास्तविक बटन नहीं हैं लेकिन लिंक हैं, how to disable/enable buttons and other form elements देखें। netbrain सुझावों की तरह, आपको सक्रिय या सक्षम होने की तरह दिखने के लिए आपको लिंक के क्लास नामों के साथ अभी भी बेकार होना होगा।

आईएमएचओ, मैं वास्तविक HTML बटन का उपयोग करूंगा।

+0

बटन अक्षम करना समझ में नहीं आता है, क्योंकि सर्वर साइड कोड केवल AJAX कॉल रिटर्न के बाद निष्पादन करना शुरू कर देता है। तो उपयोगकर्ता ने तब भी कोई प्रभाव नहीं देखा है। फिर भी, यह एक नौसिखिया, Thx के लिए एक उपयोगी लिंक है! – Tieske

+0

तो AJAX कॉल सर्वर को भविष्य में कुछ समय पर निष्पादित कुछ कतारबद्ध करने के लिए कहता है? यदि ऐसा है, तो मुझे लगता है कि यह ठीक है, लेकिन यह अभी भी एक अच्छा अतिरिक्त है कि इस दौरान कुछ घटित हो रहा है, यानी स्पिनर एनीमेशन का उपयोग करके या अस्थायी रूप से बटन को अक्षम करके। – BoffinbraiN

0

यह अधिकांश लोगों के लिए यह एक सामान्य सामान्य समाधान होना चाहिए जो इस डिफ़ॉल्ट व्यवहार को नहीं चाहते हैं। ध्यान दें कि आपको normalized vclick event की आवश्यकता है।

$(document).bind("mobileinit", function(){ 
    $("div[data-role=footer] a").live('vclick', function (e) { 
    $(this).removeClass("ui-btn-active"); 
}); 
संबंधित मुद्दे