Document (ডকুমেন্ট.বিডি) এবং $ ('বডি') এর মধ্যে পার্থক্য


104

আমি একটি jQuery শিক্ষানবিস এবং কিছু কোড উদাহরণগুলি পেয়ে যাবার সময় আমি পেয়েছি:

$(document.body) এবং $('body')

এই দুজনের মধ্যে কি কোনও পার্থক্য আছে?


1
একটি দ্রুত, তবে এটি বিবেচনা করে যে কোনও একক পৃষ্ঠায় কখনও কখনও কয়েকবার বেশি বলা হবে না, উভয়ের মধ্যে পার্থক্য খুব সামান্য।
কেভিন বি

$(body).on('click'...ইভেন্টের জন্য কাজ করে না , যেখানে $(document.body)এবং $(document)উভয়ই কাজ করে।
rybo111

3
উপরের বিবৃতিটি মিথ্যা এবং কর্মক্ষেত্রেও সামান্য পার্থক্য রয়েছে, প্রায় 10% document (ডকুমেন্ট.বডি) এর পক্ষে। আপনি এখানে তুলনা দেখতে পারেন sitepoint.com/jquery-body-on-docament-on
সিগিসমুন্ড

উত্তর:


76

তারা একই উপাদানটিকে উল্লেখ করে, পার্থক্যটি হ'ল আপনি যখন বলেন যে আপনি document.bodyউপাদানটি সরাসরি jQuery এ চলেছেন। বিকল্পভাবে, আপনি স্ট্রিংটি পাস করার পরে 'body', jQuery সিলেক্টর ইঞ্জিনটি স্ট্রিংটি কী উপাদান (গুলি) দ্বারা বোঝায় তা নির্ধারণ করতে হবে।

অনুশীলনে হয় কাজ সম্পন্ন করা হবে।

আপনি যদি আগ্রহী হন তবে jQuery ফাংশনের জন্য ডকুমেন্টেশনে আরও তথ্য রয়েছে ।


1
প্রথম বিবৃতি সম্পূর্ণ সঠিক নয়। তারা একই উপাদান উল্লেখ করতে পারে । সাধারণত এমনকি। তবে সব সময় নয় :). আমার উত্তর নীচে দেখুন।
jvenema

18

এখানে উত্তরগুলি আসলে সম্পূর্ণ সঠিক নয়। বন্ধ, কিন্তু একটি প্রান্ত মামলা আছে।

পার্থক্যটি হ'ল $ ('বডি') আসলে ট্যাগ নাম দ্বারা উপাদানটি নির্বাচন করে, যেখানে ডকুমেন্ট.ভোমী নথির সরাসরি বস্তুটিকে উল্লেখ করে।

এর অর্থ যদি আপনি (বা কোনও দুর্বৃত্ত লিপি) যদি ডকুমেন্টটিকে ওভাররাইট করে দেয় তবে কারও উপাদান (লজ্জা!) $ ('বডি') এখনও কাজ করবে, তবে $ (ডকুমেন্ট.বডি) কাজ করবে না। সুতরাং সংজ্ঞা দ্বারা তারা সমতুল্য নয়।

আমি অনুমান করার উদ্যোগ নিয়েছিলাম যে অন্য প্রান্তের কেসগুলি রয়েছে (যেমন আইআই তে বিশ্বব্যাপী আইডিযুক্ত উপাদানগুলি) যা ডকুমেন্ট অবজেক্টের ওভাররাইটেড বডি এলিমেন্টের পরিমাণের পরিমাণও ট্রিগার করবে এবং একই পরিস্থিতি প্রযোজ্য হবে।


আমি সম্ভবত এটি document.bodyব্যতীত অন্য কোনও কিছুতে সেট করা সম্ভব বলে মনে করি না <body>: i.imgur.com/unJVwXy.png
এমপেন

এখনই সমাধান হতে পারে। একটা সময় ছিল যখন এফএফ এবং আইই আপনাকে এটি করতে দেয়, এবং / অথবা "বডি" এর একটি আইডি দিয়ে আইটেমগুলি দ্বারা বিভ্রান্ত হয়ে পড়েছিল (যে ত্রুটিটি আমি আঘাত করেছি তা কোনও প্লাস্টিক সার্জনের সাইটে আমাদের স্ক্রিপ্টটি কোনও ছবিযুক্ত ট্যাগ সহ ব্যবহার করা হয়েছিল using আইডি "বডি")। আশা করি আর সমস্যা নেই :)
jvenema

12

আমার ব্রাউজারে টেস্ট করার সময় আমি টাইমিংয়ে বেশ বড় পার্থক্য পেয়েছি।

আমি নিম্নলিখিত স্ক্রিপ্ট ব্যবহার করেছি:

সতর্কতা: এটি চালানো আপনার ব্রাউজারটি কিছুটা হিমশীতল করবে, এমনকি এটি ক্রাশও হতে পারে।

var n = 10000000, i;
i = n;
console.time('selector');
while (i --> 0){
    $("body");
}

console.timeEnd('selector');

i = n;
console.time('element');
while (i --> 0){
    $(document.body);
}

console.timeEnd('element');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

আমি 10 মিলিয়ন ইন্টারঅ্যাকশন করেছি এবং সেগুলি ফলাফল ছিল (ক্রোম 65):

নির্বাচক: 19591.97509765625ms
উপাদান: 4947.8759765625 মিমি

নির্বাচককে পাস করার চেয়ে উপাদানটি সরাসরি পাস করা প্রায় 4 গুণ দ্রুত।


7
আপনি কেবল "তীর স্বরলিপি" এর জন্য একটি উত্সাহ পেয়েছেন, আপনি গালাগালি ফিটার!
KlaymenDK

1
আমি কোথাও এ সম্পর্কে পড়েছি এবং আমি এখনই এটি এক্সডি
ফিটার মার্ট

হ্যাঁ, তবে - আপনি কি সত্যিই এই 10 মিলিয়ন বার করতে যাচ্ছেন? কেন এটি বিশিষ্ট বিশ্লেষণ এই ধরণের না?
স্ক্রাইন

@ স্ক্রীন সেই কর্মক্ষমতা পরীক্ষাগুলি বাস্তব ব্যবহারের ক্ষেত্রে নয়। এটির মতো কোনও উপাদানের জন্য 10 মিলিয়ন অপারেশন করা বেশ বিরল। তবে ওপি পার্থক্যটি জানতে চেয়েছিল এবং আমি লক্ষ্য করেছি যে পারফরম্যান্সের পার্থক্য রয়েছে, তাই আমি মনে করি এটি লক্ষ্য করার মতো।
ফিটার

9

$(document.body)documentএকটি রেফারেন্স পেতে গ্লোবাল রেফারেন্স ব্যবহার করছে body, অন্যদিকে $('body')এমন একটি নির্বাচক রয়েছে যেখানে jQuery এর <body>উপাদানটির রেফারেন্স পাবে document

কোনও বড় পার্থক্য যা আমি দেখতে পাচ্ছি না, একের থেকে অন্যের কাছে কোনও লক্ষণীয় পারফরম্যান্স নয়।


9
$(document.body)এই নিবন্ধ অনুসারে পরিমাপযোগ্য দ্রুত: সিটিপয়েন্টিওন.কম
স্টিভ হ্যারিসন

6

প্রথমে কিছুটা পারফরম্যান্ট হওয়াতে কোনও পার্থক্য থাকতে হবে না তবে আমি মনে করি এটি তুচ্ছ (সত্যিই আপনার এই বিষয়ে চিন্তা করা উচিত নয়)।

উভয়ের সাথেই আপনি <body>ট্যাগটি একটি jQuery অবজেক্টে মোড়ক করেন


3

আউটপুটওয়ালা উভয়ই সমান। যদিও দ্বিতীয় প্রকাশটি ডিওএম রুট থেকে শীর্ষে অনুসন্ধানের মধ্য দিয়ে যায়। আপনি যদি ইতিমধ্যে ডকুমেন্টে থাকতে পারেন।জিক্যুউরিটি মোড়ানোর জন্য যদি হাতে দস্তাবেজ থাকে তবে আপনি অতিরিক্ত ওভারহেড এড়াতে চাইবেন (তবে এটি ছোট ছোট হতে পারে)। দেখুন http://api.jquery.com/jQuery/ #Selector প্রসঙ্গ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.