পারফরম্যান্সের দৃষ্টিকোণ থেকে কোনও উপাদানকে একটি শ্রেণি বরাদ্দ করা হয়েছে কিনা তা নির্ধারণের কোনও পছন্দনীয় পদ্ধতি আছে?
$('#foo').hasClass('bar');
বা
$('#foo').is('.bar');
পারফরম্যান্সের দৃষ্টিকোণ থেকে কোনও উপাদানকে একটি শ্রেণি বরাদ্দ করা হয়েছে কিনা তা নির্ধারণের কোনও পছন্দনীয় পদ্ধতি আছে?
$('#foo').hasClass('bar');
বা
$('#foo').is('.bar');
উত্তর:
আমি একটি মন্তব্যের পরে একটি পরীক্ষা এবং খুব মন্তব্য করার জন্য চারটি আপডিকেটেড করেছিলাম। দেখা যাচ্ছে যে আমি যা বলেছিলাম তা সঠিক উত্তর। ফলাফল এখানে:

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();
আমি পেয়েছি:
কোনও বিশাল পার্থক্য নয়, তবে আপনি যদি প্রচুর পরীক্ষা করে নিচ্ছেন তবে এটি প্রাসঙ্গিক হতে পারে ।
সম্পাদনা করুন যখন আমি বলি 'বিশাল পার্থক্য নয়, আমার বক্তব্যটি হ'ল পার্থক্যটির 0.8s দেখতে আপনার 10000 চক্র করা উচিত। আমি একটি ওয়েব অ্যাপ্লিকেশন দেখতে যেমন যে থেকে সুইচিং অবাক হবো isকরার hasClassসব কর্মক্ষমতা উপর উল্লেখযোগ্য উন্নতি দেখতে হবে। তবে, আমি সম্মতি দিচ্ছি যে এটি গতিতে 35% উন্নতি।
উভয়েরই পারফরম্যান্সের দিক দিয়ে খুব কাছাকাছি হওয়া উচিত তবে আমার কাছে এটি $('#foo').hasClass('bar');আরও পাঠযোগ্য এবং শব্দার্থগতভাবে সঠিক বলে মনে হচ্ছে।