2012-11-13 12 views
82

मैं निम्न स्क्रिप्ट जो की जाँच करता है एक तत्व वर्ग a है या नहीं भर में आ गए हैं, और अगर नहीं, तो यह कहते हैं:क्या मुझे "addClass" से पहले "हैस्क्लास" का उपयोग करना चाहिए?

if (!$("div").hasClass("a")){ 
    $("div").addClass("a"); 
} 

jQuery के रूप में अगर वह पहले से मौजूद वर्ग में शामिल नहीं होगा, यह करने के लिए बदला जा सकता है :

$("div").addClass("a"); 

हालांकि, hasClass पहले का उपयोग करके कोई प्रदर्शन में सुधार है, या यह एक ही तरीका है जिसके addClass करता है उपयोग कर रहा है वैसे भी, और इसलिए तर्क डुप्लिकेट?

उत्तर

133

.hasClass() चेक उपयोगी नहीं है क्योंकि jQuery will also always check.addClass() के भीतर से। यह सिर्फ अतिरिक्त काम है।

11

आप स्रोत कोड पर देख सकते हैं: https://github.com/jquery/jquery/blob/master/src/attributes/classes.js#L38-L45 कि वे addClass का उपयोग करते समय कक्षा मौजूद हैं या नहीं।

तो वहाँ इस मामले में .hasClass() .. (यदि आप और अधिक कार्रवाई करने के लिए करता है, तो तत्व वर्ग नहीं था चाहता था एक अपवाद हो सकता है ..)

+3

थिस्सलोनिकी और +1 से हैलो - मुझे '# एलएक्स-वाई' चाल के बारे में पता नहीं था :) – Jon

+3

अरे जॉन :) यह माउस भी चयन योग्य है .. (* लाइन नंबर और शिफ्ट + क्लिक पर क्लिक करें सभी लाइनों का चयन करने के लिए .. *) –

4

उपयोग करने के लिए यह क्या है के लिए कोई कारण नहीं है यहां तक ​​कि क्रोम में जब स्टैंडअलोन .removeClass() रिपोर्ट कई बार धीमी, यह लगभग 70,000 संचालन एक दूसरे में आता है http://jsperf.com/jquery-hasclass-vs-addclass-and-removeclass

हालांकि,: लायक, वहाँ अपने सीमित परीक्षण में .hasClass() के साथ एक प्रदर्शन में सुधार है।

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