jQuery ডকুমেন্ট.টিডি বনাম স্ব কলিং বেনাম ফাংশন


137

এই দুই এর মধ্যে পার্থক্য কি.

  1. $(document).ready(function(){ ... });

  2. (function(){ ... })();

এই উভয় ফাংশন একই সাথে বলা হয়? আমি জানি, ডকুমেন্ট.ডিয়ার ট্রিগার করা হবে যখন পুরো এইচটিএমএল পৃষ্ঠাটি ব্রাউজার দ্বারা রেন্ডার করা হয় তবে ২ য় ফাংশন (স্ব কলিং বেনাম ফাংশন) সম্পর্কে কী হবে। এটি কী ব্রাউজারটির পৃষ্ঠাটি রেন্ডারিংয়ের জন্য অপেক্ষা করে বা যখনই এটির মুখোমুখি হয় তখনই ডাকা হয়?


18
যার মূল্য এটি তার $(function() {});সমান$(document).ready(function() {});
আয়ান হেনরি

1
স্ব কলিং বেনামী ফাংশনটি যখনই সম্মুখীন হবে তখন তা কার্যকর করা হবে। এছাড়াও, স্ক্রিনে দস্তাবেজটি রেন্ডারিং করা এবং মেমরিটিতে অবজেক্ট মডেল তৈরি করা সম্পর্কিত নয়।
অনুরাগ

সম্পর্কিত: বেনামে ফাংশনটি সংজ্ঞায়িত করে যুক্তি হিসাবে jQuery কেন দেয়? ব্যাকবোন দিয়ে কোন প্যাটার্নটি ব্যবহার করবেন
বার্গি

4
আপনার প্রশ্নের উত্তরগুলি কার্যকরভাবে যখন উত্তর দেয় তখন আপনার উচিত উত্তরগুলি গ্রহণ করা উচিত। আপনার গ্রহণযোগ্যতার হার খুব কম।
লিগেরো

প্রথমটি করার অ-jQuery উপায় হ'ল: document.addEventListener ('domContentLoaded', ফাংশন () {...});
ইভান থম্পসন

উত্তর:


112
  • $(document).ready(function(){ ... }); বা সংক্ষিপ্ত $(function(){...});

    এই ফাংশনটি ডাকা হয় যখন এর DOM is readyঅর্থ, আপনি উদাহরণগুলির জন্য উপাদানগুলির অনুসন্ধান করতে শুরু করতে পারেন । .ready()DOM সত্যই প্রস্তুত কিনা তা নিশ্চিত করতে বিভিন্ন ব্রাউজারে বিভিন্ন উপায়ে ব্যবহার করবে।

  • (function(){ ... })();

    ব্রাউজার যখন আপনার ব্যাখ্যা দিচ্ছে তখনই এটি এমন একটি ফাংশন ছাড়া আর কিছুই নয় যা যত তাড়াতাড়ি সম্ভব নিজেকে ডাকেecma-/javascript । এর জন্য, আপনি DOM elementsএখানে সফলভাবে কাজ করতে পারবেন না এর খুব কমই সম্ভাবনা ।


1
@ নিমচিম্পস্কি আমি বিভ্রান্ত (ফাংশন () {}); $ (ফাংশন () {}) সহ। আপনি ভুলের বিপরীত;)
ALH

আমি বিভ্রান্ত হয়ে পড়েছি, (function(){ ... })();কোন জেএস কোড যত তাড়াতাড়ি সম্ভব চালিত হয় না? আপনি যদি বলতেন, alert()এসআইএএফের মধ্যে বা এর বাইরেও এর প্রভাব একই রকম হয় না?
স্কুব

2
@ এসকিউব হ্যাঁ, পার্সার এটি পড়ার সাথে সাথে কোনও জেএস কোড চলবে, তবে এসআইএএফের সামনে "$" আছে কিনা তা আপনার বিভ্রান্তি আসতে পারে। যদি তাই হয়, এবং এই সাইটটি jQuery ব্যবহার করছে, তবে এটি jQuery ডকুমেন্টের সংক্ষিপ্ত রূপ। প্রস্তুতিমূলক সহায়তা ফাংশন, যা প্রদত্ত ফাংশনটি ডিওএম উপলভ্য হওয়ার পরে নির্বাহের জন্য নির্ধারিত হবে। সহায়ক ফাংশনটি পড়ার সাথে সাথে নিজেই চলবে, তবে আপনি যে ফাংশনটি সরবরাহ করেন তা তা কার্যকর হবে না।
নিল মনরো

46

(function(){...})(); এটি জাভাস্ক্রিপ্টে আসার সাথে সাথেই কার্যকর করা হবে।

$(document).ready()দস্তাবেজটি লোড হয়ে গেলে একবার কার্যকর করা হবে। $(function(){...});শর্টকাট হ'ল $(document).ready()এবং ঠিক একই জিনিসটি করে।


25
  1. $(document).ready(function() { ... });কেবলমাত্র সেই ফাংশনটিকে readyনথির ইভেন্টের সাথে আবদ্ধ করে তোলে , সুতরাং আপনি যেমনটি বলেছিলেন, ডকুমেন্টটি লোড হওয়ার সাথে সাথে ইভেন্টটি ট্রিগার হয়ে যায়।

  2. (function($) { ... })(jQuery);আসলে জাভাস্ক্রিপ্টের একটি নির্মাণ, এবং কোডের সমস্ত টুকরা হ'ল jQueryবস্তুকে function($)প্যারামিটার হিসাবে পাস করে ফাংশনটি চালায় তাই সেই ফাংশনের অভ্যন্তরে $সর্বদা jQueryঅবজেক্টকে বোঝায় । এটি নেমস্পেসিং বিরোধগুলি ইত্যাদি সমাধান করতে সহায়তা করতে পারে etc.

সুতরাং ডকুমেন্টটি লোড হয়ে গেলে # 1 কার্যকর করা হয়, যখন # 2 অবিলম্বে চালানো হয়, শর্টহ্যান্ড হিসাবে চিহ্নিত jQueryবস্তুর সাথে $


25

জাভাস্ক্রিপ্ট কোড কার্যকর করার জন্য DOM (ডকুমেন্ট অবজেক্ট মডেল) প্রস্তুত হলে নিম্নলিখিত কোডটি কার্যকর করা হবে।

$(document).ready(function(){
  // Write code here
}); 

উপরের কোডটির সংক্ষিপ্ত হাতটি হ'ল:

$(function(){
  // write code here
});

নীচে প্রদর্শিত কোডটি একটি স্ব-আমন্ত্রণকারী বেনামে জাভাস্ক্রিপ্ট ফাংশন, এবং ব্রাউজার এটি ব্যাখ্যা করার সাথে সাথেই কার্যকর করা হবে:

(function(){
  //write code here
})();   // It is the parenthesis here that call the function.

নীচে প্রদর্শিত jQuery স্ব-চালিত ফাংশন, আর্গুমেন্ট হিসাবে গ্লোবাল jQuery অবজেক্টটি পাস করে function($)। এটি $সংজ্ঞাটির জন্য বিশ্বব্যাপী সুযোগকে অতিক্রম করার প্রয়োজন ছাড়াই স্ব-আমন্ত্রণমূলক ক্রিয়াকলাপের মধ্যে স্থানীয়ভাবে ব্যবহৃত হতে সক্ষম করে। jQuery একমাত্র গ্রন্থাগার নয় যা ব্যবহার করে $, তাই এটি নামকরণের সম্ভাব্য সংঘাতগুলি হ্রাস করে।

(function($){
  //some code
})(jQuery);

2
জাভাস্ক্রিপ্ট বন্ধের খুব সহজ, স্পষ্ট এবং সংক্ষিপ্ত ব্যাখ্যা।
COD

16

ডকুমেন্ট.ডিএমটি "নির্মিত" হওয়ার পরে প্রস্তুত। স্ব-আহ্বানকারী ক্রিয়াগুলি তাত্ক্ষণিকভাবে চালিত হয় - যদি OM <head>োকানো হয় তবে ডিওএম নির্মাণের আগে।


6
অহেতুক ডাউনটোটের বিরুদ্ধে লড়াই করতে +1। তবে আপনার উত্তরে কিছুটা সমস্যা আছে। পার্সিং করার সময় যেখানে পাওয়া যায় সেখানে স্ব-আমন্ত্রণমূলক ক্রিয়াকলাপ কার্যকর করা হবে এবং অগত্যা এটির অভ্যন্তরে থাকতে হবে <head>না এবং প্রাথমিক ডিওএম তৈরি হওয়ার পরে নিয়মগুলি আলাদা নয়।
অনুরাগ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.