2011-02-15 3 views
11

उदा:मैं jquery में किसी अन्य के साथ विशेष कक्षा को कैसे बदलूं?

<li class="dataItem ready igto" status="ready">I will change status to waiting</li> 

और फिर, मैं सिर्फको तैयार वर्ग बदलने के लिएवर्ग तैयार को दूर करने और नए वर्ग को जोड़नेको व्याप्ति सामान्य तरीका है इंतज़ार कर रहे हैं!

और एक अन्य स्थिति पर एक साथ बहु वर्ग को बदलने के लिए है !? उदा:

<!-- replace done wainting error to ready --> 
<li class="dataItem done igto" status="ready">I will change status to ready</li> 
<li class="dataItem waiting igto" status="ready">I will change status to ready</li> 
<li class="dataItem error igto" status="ready">I will change status to ready</li> 

रहे हैं:

<li class="dataItem ready igto" status="ready">I will change status to waiting</li> 

आपको बहुत बहुत धन्यवाद !!

उत्तर

21

जैसा कि आप कहते हैं, सबसे अच्छा तरीका है क्लास को हटाएं, फिर इसे फिर से जोड़ें, क्योंकि jQuery में कोई "स्विचिंग" कक्षाएं नहीं हैं।

$('.dataItem').removeClass('ready').addClass('waiting'); 

आप .removeClass() में एक से अधिक वर्ग में पास करके कई वर्गों की जगह ले सकता:

$('.dataItem').removeClass('done waiting error').addClass('ready'); 
24

आप $.toggleClass() उपयोग कर सकते हैं इस लक्ष्य को हासिल करने के लिए।

$("p").click(function(){ 
    // Replace 'done' with 'waiting' or 'waiting' with 'done' 
    $(this).toggleClass("done waiting"); 
}); 

उदाहरण: http://jsfiddle.net/wH9x3/

+1

+1 पहले और साफ। – JCOC611

+0

विश्वसनीय नहीं है, क्योंकि यह हर बार टॉगल करेगा, भले ही हम इसे नहीं चाहते हैं। – sidney

+0

@ सिडनी बिंदु यह दिखाने के लिए है कि '$ .fn.toggleClass' कैसे काम करता है। यह उन लोगों पर निर्भर करता है जो इसे सशर्त रूप से केवल कुछ परिस्थितियों में निष्पादित करने के लिए लपेटते हैं। – Sampson

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