2010-10-19 17 views
14

पर हटाएं मैं एक अनियंत्रित सूची में तत्वों पर कक्षाओं को बदलने के लिए निम्न jQuery का उपयोग कर रहा हूं। ऐसा प्रतीत नहीं होता है कि यह प्रभाव प्राप्त करने का सबसे प्रभावी तरीका है। क्या यह लिखने का एक बेहतर तरीका है?jQuery हटाने/माता-पिता/भाई/बच्चे

$(function() { 
    $('nav li a').click(function() { 
     $(this).parent().siblings().children().removeClass('active'); 
     $(this).addClass('active'); 
    }); 
}); 

धन्यवाद

एस

उत्तर

38

यह <li> को हैंडलर देते हैं और <a> से क्लिक bubble up (जो डिफ़ॉल्ट रूप से होता है) जाने के लिए आमतौर पर इन मामलों में आसान है। फिर अपने हैंडलर इस तरह दिखता है:

$(function() { 
    $('nav li').click(function() { 
    $(this).addClass('active').siblings().removeClass('active'); 
    }); 
}); 

फिर अपने सीएसएस में आप सिर्फ active के लिए <li> पर किया जा रहा है खाता होना चाहिए, इस तरह: एक तरफ

li.active a { color: red; } 

एक के रूप में, अगर आप आप कई <li> तत्व ' .delegate() इस तरह उपयोग करना चाहते हैं जाएगा:

$('nav').delegate('li', 'click', function() { 
    $(this).addClass('active').siblings().removeClass('active'); 
}); 
+0

बिल्कुल सही में उपयोग कर रहा हूँ! धन्यवाद - प्रतिनिधि बिल्कुल वही है जो मैं ढूंढ रहा था। – simonyoung

5

भी ध्यान रखें कि आप 'active' इधर-उधर निकालना चाहते हैं मीटर this को छोड़कर सभी तत्वों तो आप के रूप में

$('.active').removeClass('active'); 
$(this).addClass('active'); 

के रूप में सरल कुछ के साथ दूर हो सकता है और वह बहुत आसानी से पेड़ के माध्यम से प्रचार-प्रसार करना चाहिए। हालांकि, अगर डोम भारी आबादी है तो मैं इसे प्रदर्शन पर सिरदर्द पैदा कर सकता हूं।

0

मैं कोड ऊपर का इस्तेमाल किया, यह

काम कर रहा है मैं अपने कोड

enter code here : function addnewStepsUpper(){ 
jQuery('.hide_upper_clone_class').clone().insertAfter(".upper_clone_class1"); 
jQuery('.upper_clone_class1').siblings().removeClass('hide_upper_clone_class'); 

}

धन्यवाद विशाल सांवर