jQuery খালি () বনাম অপসারণ ()


99

এর মধ্যে empty()এবং remove()পদ্ধতির মধ্যে পার্থক্য কী jQueryএবং আমরা যখন এই পদ্ধতির কোনও কল করি তখন তৈরি হওয়া বস্তুগুলি ধ্বংস হয়ে যায় এবং স্মৃতি প্রকাশিত হয়?

উত্তর:


160
  • empty() এর বিষয়বস্তুর নির্বাচনটি খালি করে দেবে, তবে নির্বাচনটি নিজেই সংরক্ষণ করবে।
  • remove()এর বিষয়বস্তুগুলির নির্বাচনটি খালি করবে এবং নিজেই নির্বাচনটি সরিয়ে ফেলবে।

বিবেচনা:

<div>
    <p><strong>foo</strong></p>
</div>

$('p').empty();  // --> "<div><p></p></div>"

// whereas,
$('p').remove(); // --> "<div></div>"

উভয়ই DOM অবজেক্টগুলি সরিয়ে দেয় এবং তাদের গ্রহণ করা মেমরিটি ছেড়ে দেওয়া উচিত, হ্যাঁ।


এখানে ডকুমেন্টেশনের লিঙ্কগুলি রয়েছে, যার উদাহরণও রয়েছে:


4
ইভেন্ট হ্যান্ডলারদের সম্পর্কে কী? আমার একটি অদ্ভুত কেস রয়েছে যেখানে খালি + দুটি বার সংযোজন করা হয়েছে, বিভিন্ন সংযোজনগুলির সাথে প্রথম সংযোজনকারীদের দ্বিতীয় সেট সংযুক্ত আইটেমগুলি কার্যকর করা হয় of
কিলরোয়

4
@ যাইহোক অনেক দেরীতে, তবে তারা হ্যান্ডলারটিও সরিয়ে দেয়। এমন একটি সুযোগ রয়েছে যে আপনি হ্যান্ডলারের মতো liveবা কোনও ফাংশনে নিবন্ধিত হয়েছিলেন delegate
পূর্বাবস্থায় ফেরানো

55

ডকুমেন্টেশন এটি খুব ভাল ব্যাখ্যা করে। এটিতে উদাহরণ রয়েছে:

আগে:

<div class="container">
  <div class="hello">Hello</div>
  <div class="goodbye">Goodbye</div>
</div>

.অপসারণ():

$('.hello').remove();

পরে:

<div class="container">
  <div class="goodbye">Goodbye</div>
</div>

আগে:

<div class="container">
  <div class="hello">Hello</div>
  <div class="goodbye">Goodbye</div>
</div>

.empty ():

$('.hello').empty();

পরে:

<div class="container">
  <div class="hello"></div>
  <div class="goodbye">Goodbye</div>
</div>

যতদূর স্মৃতি সম্পর্কিত, একবার DOM থেকে কোনও উপাদান সরিয়ে ফেলা হয়েছে এবং এর কোনও উল্লেখ নেই are আবর্জনা সংগ্রাহক যখন এটি চালাবেন তখন স্মৃতি পুনরায় দাবি করবেন।


খালি নির্বাচক এর গুণাবলী স্পর্শ করবে না। আপনি যদি নির্বাচক উপাদানটির বৈশিষ্ট্যগুলি সরাতে চান তবে আমি লক্ষ্য করেছি যে jQuery সরানোআউটআর এবং সরানক্লাস ফায়ারফক্সে বগি। সুতরাং আমার কাছে বিকল্পটি ছিল অপসারণ পদ্ধতিটি ব্যবহার করে আবার ধারক উপাদান যুক্ত করে তারপরে একই সাথে শিশু নোড যুক্ত করুন।
এলোমেলোভাবে অফফ্লাইটিংথিং

নিখুঁত সংক্ষিপ্তসার, এটি এত ভাল ব্যাখ্যা করে! আমার কাছে গৃহীত উত্তরের চেয়েও ভাল।
জনস্নো 30'19

2

$("body").empty() - এটি 'বডি ট্যাগের অভ্যন্তরে এইচটিএমএল ডিওএম উপাদানগুলি সরিয়ে দেয় -

যখন আপনি ঘোষণা করেন $("body").remove() - এটি বডি TAG সহ পুরো এইচটিএমএল ডিওএমটি সরিয়ে দেয়।


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