2011-10-05 12 views
9

मैं अपने उपयोगकर्ता को एक बटन दबाए जाने के बाद कुछ लगातार प्रतिक्रिया देना चाहता हूं (जैसे यह इंडेंट या कुछ है)। मैंने कोशिश की:jQuery मोबाइल में डेटा-थीम बदलें

$(this).data('theme','b'); 

लेकिन यह काम नहीं करता है।

प्रश्न: क्या इंडेंट बटन दिखाने का कोई तरीका है या फ्लाई पर data-theme बदलना है?

+0

ओह, मैं सिर्फ वर्ग = "ui-btn-up-a, ui-btn-up-b, ui-btn-up-c, ui-btn-up-d, ui-btn- अप-ई " –

+0

यह लगभग काम करता है लेकिन jQuery वापस आ जाता है और बाद में इसी यूई-बीटीएन को फिर से सौंपता है। –

उत्तर

16

मुझे पता है कि यह एक पुराना सवाल है, लेकिन मैं हाल ही में इस बाधा में भाग गया।

यह कर के रूप में निम्नानुसार किया जाएगा करने का सही तरीका:

$(this).buttonMarkup({theme: 'b'}); 
+0

आपको कॉल करने की आवश्यकता नहीं है। बटन ('रीफ्रेश करें') – Alexandre

+0

धन्यवाद, अलेक्जेंड्रे। मैंने जवाब अपडेट किया। – Fraz0r

+0

धन्यवाद Fraz0r! मैंने इस मुद्दे को दोबारा संशोधित किया क्योंकि अब मैं एक बटन के बजाय सूची आइटम का विषय बदलने की कोशिश कर रहा हूं। –

2

एक रूप के अंदर एक सबमिट बटन के लिए, यह मेरे लिए काम किया jQuery मोबाइल 1.2.0 का उपयोग कर:

$(this).buttonMarkup({theme: 'b'}); 
$(this).parent().buttonMarkup({ theme: "b" }); 
+0

धन्यवाद विद्रोही गठबंधन! जानने के लिए बहुत सी चीजें! –

7

मेरे पास है jQuery मोबाइल में वैश्विक स्तर पर थीम को गतिशील रूप से बदलने का एक तरीका ढूंढ रहा है (उदाहरण के लिए बटन क्लिक पर)। ऐसा करने के लिए कल्पना की तुलना में अधिक जटिल होने के लिए बाहर निकला।

// Dynamically changes the theme of all UI elements on all pages, 
// also pages not yet rendered (enhanced) by jQuery Mobile. 
$.mobile.changeGlobalTheme = function(theme) 
{ 
    // These themes will be cleared, add more 
    // swatch letters as needed. 
    var themes = " a b c d e"; 

    // Updates the theme for all elements that match the 
    // CSS selector with the specified theme class. 
    function setTheme(cssSelector, themeClass, theme) 
    { 
     $(cssSelector) 
      .removeClass(themes.split(" ").join(" " + themeClass + "-")) 
      .addClass(themeClass + "-" + theme) 
      .attr("data-theme", theme); 
    } 

    // Add more selectors/theme classes as needed. 
    setTheme(".ui-mobile-viewport", "ui-overlay", theme); 
    setTheme("[data-role='page']", "ui-body", theme); 
    setTheme("[data-role='header']", "ui-bar", theme); 
    setTheme("[data-role='listview'] > li", "ui-bar", theme); 
    setTheme(".ui-btn", "ui-btn-up", theme); 
    setTheme(".ui-btn", "ui-btn-hover", theme); 
}; 

वहाँ कुछ अतिरिक्त शामिल है क्योंकि मैं भी अभी तक JQM द्वारा नहीं दिखाया पृष्ठों की विषय अद्यतन करने के लिए चाहता था जटिलता है: वैसे भी, यहाँ इस पर अपना लेते हैं, इसलिए पर विभिन्न समाधान और अन्य साइटों से प्रेरित है। चयनकर्ताओं और थीम वर्गों के जोड़ों में कोड को संरचित करने से मुझे यह और स्पष्ट हो गया।

आप उदाहरण के लिए, गतिशील रूप से सभी UI तत्व के लिए विषय अद्यतन करने के लिए इस समारोह कॉल कर सकते हैं:

$.mobile.changeGlobalTheme("b"); 

मैं भी समाधान मैंने देखा है कि रेगुलर एक्सप्रेशन का उपयोग, लेकिन इस मामले में मैं प्रक्रिया अपनाते हैं जैसे नई वस्तुओं को जोड़ने की स्पष्टता और आसानी के कारण चयनकर्ताओं और थीम कक्षाओं को स्पष्ट रूप से बताएं। मैंने डीओएम पेड़ का निरीक्षण करके चयनकर्ता/वर्ग जोड़े को समझ लिया।

मुझे कहना होगा कि मैं आधुनिक जावास्क्रिप्ट कोड के लिस्प-जैसे स्वाद की सराहना करता हूं।

+0

धन्यवाद माइकल! मुझे नहीं पता कि मैं जावास्क्रिप्ट के लिए आपकी प्रशंसा साझा करता हूं, लेकिन अब मैं इससे अधिक परिचित हूं। –

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