क्या यह निर्धारित करने का एक पसंदीदा तरीका है कि क्या एक तत्व को एक वर्ग सौंपा गया है, प्रदर्शन के दृष्टिकोण से?
$('#foo').hasClass('bar');
या
$('#foo').is('.bar');
क्या यह निर्धारित करने का एक पसंदीदा तरीका है कि क्या एक तत्व को एक वर्ग सौंपा गया है, प्रदर्शन के दृष्टिकोण से?
$('#foo').hasClass('bar');
या
$('#foo').is('.bar');
जवाबों:
मैंने एक टिप्पणी के बाद एक परीक्षण किया और बहुत टिप्पणी करने के लिए चार upvotes। यह पता चला है कि मैंने जो कहा था वह सही उत्तर है। यहाँ परिणाम है:

http://jsperf.com/hasclass-vs-is-so
यह isबहुउद्देश्यीय है, आप उदाहरण के लिए is('.class'), is(':checked')आदि कर सकते हैं , जिसका अर्थ isहै कि ऐसा अधिक है जहाँ hasClassसीमित है जो केवल एक वर्ग के सेट या नहीं की जाँच करता है।
इसलिए, hasClassकिसी भी स्तर पर प्रदर्शन आपकी प्राथमिकता है, तो तेजी से होना चाहिए।
hasClass है एक बहुत अधिक तेजी से।
के बाद से isअधिक से अधिक सामान्य है hasClassऔर उपयोग करता है filterप्रदान की अभिव्यक्ति पर कार्रवाई करने के, यह संभावना है कि लगता हैhasClass है तेजी से।
मैंने फायरबग कंसोल से निम्न कोड चलाया:
function usingIs() {
for (var i=0; i<10000;i++) {
$('div#example-0').is('.test');
}
}
function usingHas(){
for (var i=0; i<10000;i++) {
$('div#example-0').hasClass('test');
}
}
usingIs();
usingHas();
मुझे मिला:
बहुत बड़ा अंतर नहीं है, लेकिन यदि आप बहुत कुछ कर रहे हैं तो प्रासंगिक हो सकता है परीक्षण ।
EDIT जब मैं कहता हूं कि कोई बहुत बड़ा अंतर नहीं है, तो मेरा कहना यह है कि आपको 0.8 के अंतर को देखने के लिए 10000 चक्र करने की आवश्यकता है। मैं एक वेब एप्लिकेशन को देखकर आश्चर्यचकित रहूंगा, जिसमें से स्विच isकरने hasClassसे सभी प्रदर्शनों में महत्वपूर्ण सुधार होगा। हालांकि, मैं अनुदान देता हूं कि यह गति में 35% सुधार है।
दोनों को प्रदर्शन के मामले में काफी करीब होना चाहिए, लेकिन $('#foo').hasClass('bar');अधिक पठनीय और शब्दार्थ से मुझे सही लगता है।