jQuery: eq () বনাম get ()


99

আমি jQuery এ নতুন, এবং আমি ভাবছি jQuery এর get()এবং eq()ফাংশন মধ্যে পার্থক্য কি । আমি get()ফাংশনটি কী করে তা ভুল বুঝতে পারি, তবে আমি মনে করি এটি অদ্ভুত যে আমি একই লাইনে ফিরে আসা উপাদানটিতে ফিরে আসা কোনও ফাংশনটি কল করতে পারি না।

//Doesn't work
I.e.  $("h2").get(0).fadeIn("slow");

//Works
$("h2").eq(0).fadeIn("slow");


উত্তর:


196

.get()এবং .eq()উভয়ই jQuery অবজেক্ট অ্যারে থেকে একটি একক "উপাদান" ফেরত দেয় তবে তারা একক উপাদানটিকে বিভিন্ন আকারে ফেরত দেয়।

.eq() এটিকে jQuery অবজেক্ট হিসাবে ফিরিয়ে দেয়, যার অর্থ DOM উপাদানটি jQuery মোড়কে আবৃত থাকে, যার অর্থ এটি jQuery ফাংশন গ্রহণ করে।

.get()কাঁচা DOM উপাদানগুলির একটি অ্যারে প্রদান করে। আপনি কাঁচা ডিওএম উপাদান হিসাবে যেমন এর বৈশিষ্ট্যগুলি অ্যাক্সেস করে এবং এর ফাংশনগুলি আহ্বান করে আপনি সেগুলির প্রত্যেককে ম্যানিপুলেট করতে পারেন। তবে এটি jQuery- মোড়ানো বস্তু হিসাবে তার পরিচয় হারাতে পারে, সুতরাং jQuery ফাংশনটি .fadeInকাজ করবে না।


8
.get () একটি অ্যারে প্রদান করে, .get (সূচী) অ্যারে থেকে সূচীতে একক উপাদানটি প্রদান করে।
মোহাম্মদ ফ্যাসিল

16

get()যেখানে কোনও ডিওএম উপাদান প্রদান করে :eq()এবং eq()একটি jQuery উপাদান প্রদান করে। যেহেতু DOM উপাদানগুলির কোনও পদ্ধতি নেই fadeIn()এটি ব্যর্থ

http://api.jquery.com/get/

বিবরণ: jQuery অবজেক্টের সাথে মিলিত DOM উপাদানগুলি পুনরুদ্ধার করুন।

http://api.jquery.com/eq-selector/

বিবরণ: ম্যাচড সেটের মধ্যে সূচক n এ উপাদান নির্বাচন করুন।


12

get(0)(ডক্স) সেটটিতে প্রথম ডিওএম উপাদান দেয়।

eq(0)(ডক্স) jQuery অবজেক্টে আবৃত সেটটিতে প্রথম ডোম উপাদানটি দেয়।

সে কারণেই .fadeIn("slow");যখন আপনি কাজ করেন না .get(0)। একটি ডোম উপাদানটির কোনও fadeIn()পদ্ধতি নেই তবে একটি jQuery অবজেক্ট রয়েছে।


6

অন্যান্য উত্তর তৈরি করতে:

$('h2').get(0) === $('h2').eq(0)[0]  //true
$( $('h2').get(0) ) === $('h2').eq(0)  //true

4
প্রথমটি সঠিক। দ্বিতীয়টি নয়, তবে 2 টি বস্তু এক নয়
রই নমির

5

eq(i)রিসিভারের সেটে আইথ সদস্যকে একটি jQueryবস্তু হিসাবে পুনরুদ্ধার করে , যখন get(i)সদস্যটি ডিওএম উপাদান হিসাবে আইথ পজিশনে ফিরিয়ে দেয়।

এটি কাজ না করার কারণ:

$("h2").get(0).fadeIn("slow");

কারণ h2DOM উপাদানটির একটি পদ্ধতি নেই fadeIn

eq(0)পরিবর্তে আপনার এখানে ব্যবহার করা উচিত ।


0

আমি এখানে একটি উদাহরণ দিচ্ছি যা অন্যদের দেওয়া পয়েন্টগুলি এখানে ব্যাখ্যা করে। নিম্নলিখিত কোড বিবেচনা করুন

<div id="example">
    Some text
    <div>Another div</div>
    <!--A comment-->
</div>

এবং সংশ্লিষ্ট জেএস কোড,

$(document).ready(function() {
    var div = $("#example").get(0);
    console.log(typeof(div));
    console.log(div);
    console.log("XXXXXXXXX");
    var div_eq=$('#example').eq(0);
    console.log(typeof(div_eq));
    console.log(div_eq);
    });

এই আপনি দেখতে পাবেন

 object
excercise1.js (line 5)
<div id="example">
excercise1.js (line 6)
XXXXXXXXX
excercise1.js (line 7)
object
excercise1.js (line 9)
Object[div#example]

প্রথমটি হ'ল একটি ডিওএম অবজেক্ট এবং দ্বিতীয়টি একটি জ্যাকুরি-মোড়কযুক্ত বস্তু যেখানে আপনি জ্যাকুয়ের পদ্ধতিগুলি কল করতে পারেন


0

jQuery eq () পদ্ধতিটি একটি নির্দিষ্ট সূচী সংখ্যা সহ একটি এইচটিএমএল উপাদান নির্বাচন করে।

এখানে তার একটি উদাহরণ

<body>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</body>

$( "body" ).find( "div" ).eq( 2 ).addClass( "red" );
// it finds the second div in the html body and change it to red color.

সূত্র: http://www.snoopcode.com/JQuery/jquery-eq-selector


"এটি দ্বিতীয় ডিভের সন্ধান করে" => eq(2)তৃতীয় বিভাজন ফেরায় না ?
xhienne

0

উপরের উত্তরগুলি সুনির্দিষ্টভাবে এবং সঠিকভাবে ব্যাখ্যা করেছে। আমি এখানে কয়েকটি পয়েন্ট যুক্ত করতে চাই যা ব্যবহারে সহায়তা করতে পারে get()

  1. আপনি যদি কোনও যুক্তিটি পাস না করেন .get()তবে এটি DOM উপাদানগুলির একটি অ্যারে ফিরিয়ে দেবে।

  2. যদি আপনি কোনও ডোম অবজেক্ট ব্যবহার করে পেয়ে থাকেন get(), যেমন var s = $("#id").get(0) আপনি এটিকে কেবল ব্যবহার করে এটি jQuery অবজেক্টে ফিরিয়ে দিতে পারেন,$(s)

  3. আপনি $obj[i]বিকল্প উপায় হিসাবে যদি আপনি ব্যবহার করতে না চান তবে $obj.get(i)নীচে দেখুন,

    var $obj = $("#ul li");
    var obj1 = $obj.get(1);
    var obj2 = $obj[1];
    
    //true
    return obj2===obj1;
    
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.