কীভাবে jQuery এ নাল বস্তুগুলি চেক করবেন


169

আমি jQuery ব্যবহার করছি এবং আমি আমার পৃষ্ঠায় একটি উপাদান অস্তিত্ব পরীক্ষা করতে চাই। আমি নিম্নলিখিত কোডটি লিখেছি, তবে এটি কাজ করছে না:

if($("#btext" + i) != null) {
    //alert($("#btext" + i).text());
    $("#btext" + i).text("Branch " + i);
}

আমি কীভাবে উপাদানটির অস্তিত্ব পরীক্ষা করব?

উত্তর:


251

পরীক্ষা করে দেখুন jQuery এর প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী ...

আপনি আপনার নির্বাচক দ্বারা ফিরিয়ে দেওয়া jQuery সংগ্রহের দৈর্ঘ্যের সম্পত্তিটি ব্যবহার করতে পারেন:

if ( $('#myDiv').length ){}

var _myDiv = $ ('# myDiv') সম্পর্কে আপনার কী ধারণা; ... .... যদি (_myDiv.lenght) {... exception ব্যতিক্রম উত্পাদন করে।
নূরী ইলমজ

1
এলিওট্রামমে বলেছিলেন; আরও ভাল
দৈর্ঘ্য

5
@ অরেলিয়ানো বুন্দিয়া, আপনি এর lenghtপরিবর্তে ব্যবহার করেছেন length; এটি একটি বানান ত্রুটি।
স্যাম

4
@numediaweb, অ্যালিট্লে্রাম এড়ানোর জন্য বলেন নি .length
স্যাম

1
কিন্তু .. আপনি "নাল দৈর্ঘ্য" সম্পত্তি পড়তে পারবেন না "ত্রুটি পাবেন?
সেগ্রিভ এসইও

61

(যেহেতু আমার উত্তরটি দেওয়ার পক্ষে যথেষ্ট খ্যাতি নেই বলে মনে হচ্ছে ...)

নেকড়ে লিখেছেন:

অপরিজ্ঞাত বা নাল বস্তুতে দৈর্ঘ্যের সম্পত্তি কল করার ফলে আইই এবং ওয়েবকিট ব্রাউজারগুলি ব্যর্থ হতে পারে!

পরিবর্তে এটি চেষ্টা করুন:

 // NOTE!! THE FOLLOWING IS WRONG; DO NOT USE!  -- EleotleCram
if($("#something") !== null){
  // do something
}

অথবা

 // NOTE!! THE FOLLOWING IS WRONG; DO NOT USE!  -- EleotleCram
if($("#something") === null){
  // don't do something
}

যদিও এটি সত্য যে কোনও সংজ্ঞায়িত বা নাল বস্তুতে দৈর্ঘ্যের সম্পত্তি কল করা ব্রাউজারগুলিকে ব্যর্থ করে দেবে, jQuery এর নির্বাচকদের ($ ('...')) ফলাফল কখনই বাতিল বা অপরিজ্ঞাত হবে না । এইভাবে কোডের পরামর্শগুলি কোনও অর্থ দেয় না। অন্য উত্তরগুলির মধ্যে একটি ব্যবহার করুন, তারা আরও বুদ্ধিমান।


(আপডেট ২০১২) কারণ লোকেরা কোড দেখে এবং এই উত্তরটি তালিকাটি বেশ উপরে রয়েছে: গত কয়েক বছর ধরে আমি এই ছোট প্লাগইনটি ব্যবহার করছি:

  jQuery.fn['any'] = function() {
     return (this.length > 0);
  };

আমি মনে করি $ ('ডিভ')। যেকোন () $ ('ডিভ') দৈর্ঘ্যের চেয়ে ভাল পড়বে, তত বেশি আপনি টাইপোগুলির দ্বারা খুব বেশি ক্ষতিগ্রস্থ হবেন না: $ ('ডিভ') a , $ (' ডিভ ')। দৈর্ঘ্য নীরবে সম্ভবত সর্বদা মিথ্যা হয়ে থাকবে।

__
নভেম্বর 2012 এডিট করে:

1) যেহেতু লোক কোডের দিকে নজর রাখে এবং কোডের চারপাশে কী বলা হয় তা না পড়ার জন্য আমি ওল্ফের উদ্ধৃত কোডটিতে দুটি বড় ক্যাভিয়েট লেক্টরের নোট যুক্ত করেছি।
2) আমি এই পরিস্থিতির জন্য যে ছোট প্লাগইন ব্যবহার করি তার কোড যুক্ত করেছি।


2
@ ভোভাপোপভ: আমি আপনাকে পরবর্তী বার উত্তরটি পড়তে আরও সময় দেওয়ার পরামর্শ দিচ্ছি। আমি কেবল বলছিলাম যে "ওল্ফ দ্বারা" কোড কোডটি ভুল ছিল। আমি কখনও কোনও উত্তর সরবরাহ করিনি, কেবলমাত্র অন্যান্য উত্তরগুলির সাথে উল্লেখ করেছি যা আরও অর্থবোধ করে।
অ্যালিটেলাক্রাম

ভাল উত্তর. আমি দুঃখিত লোকেরা এর ভুল ব্যাখ্যা করে।
জো সিমন্স

14

অনুসন্ধান ফাংশনটি মিলবে এমন উপাদানগুলির একটি অ্যারে প্রদান করে। দৈর্ঘ্য শূন্য কিনা তা আপনি পরীক্ষা করতে পারেন। শুধুমাত্র একবারে উপাদানগুলি অনুসন্ধান করার জন্য পরিবর্তনটি নোট করুন এবং ফলাফলগুলি প্রয়োজনীয় হিসাবে পুনরায় ব্যবহার করুন।

var elem = $("#btext" + i);
if (elem.length != 0) {
   elem.text("Branch " + i);
}

এছাড়াও, আপনি কি কেবল পাঠ্য ফাংশনটি ব্যবহার করার চেষ্টা করেছেন - যদি কোনও উপাদান উপস্থিত না থাকে তবে এটি কিছুই করবে না।

$("#btext" + i).text("Branch " + i);

7
0 একটি মিথ্যা মান, সুতরাং এগারো দৈর্ঘ্যের অভিব্যক্তিটি মিথ্যাতে মূল্যায়ন করে - অন্য কথায়, '! = 0' অংশের প্রয়োজন নেই
জেমস

2
@ 999, আমি মনে করি শূন্যের বিপরীতে চেক কোডটি আরও পঠনযোগ্য করে তোলে, যদিও উভয় উপায়েই সম্ভবত স্ক্রিপ্টিং ভাষায় অভ্যস্ত এমন কারও পক্ষে পঠনযোগ্য।
স্যাম

12

jquery $ () ফাংশনটি সর্বদা নাল ন্যূন ফেরত দেয় - এর অর্থ উপাদানগুলি আপনার নির্বাচক ক্রিটারিয়া সাথে মেলে। যদি উপাদানটি না পাওয়া যায় তবে এটি একটি খালি অ্যারেটি ফিরিয়ে দেবে। সুতরাং আপনার কোডটি এরকম কিছু দেখবে -

if ($("#btext" + i).length){
        //alert($("#btext" + i).text());
    $("#btext" + i).text("Branch " + i);
}

1
আমি মনে করি না যে এটি সত্য যে $ () একটি অ্যারে দেয়। jQuery অবজেক্টগুলির আচরণগুলি অ্যারের অনুরূপ, তবে আমি মনে করি না তারা আসলে অ্যারে হয়, এবং আমি মনে করি আপনি দেখতে পাবেন যে তাদের সমস্ত আচরণ অ্যারেগুলির মতো নয়। দেখুন এই দ্রুত বিক্ষোভের
স্যাম

5

JQuery 1.4 এ আপনি is .isEmptyObject ফাংশনটি পান তবে আপনি যদি আমাদের মত জিকিউর পুরানো সংস্করণ ব্যবহার করতে বাধ্য হন তবে দরিদ্র ড্রুপাল বিকাশকারীরা কেবল এই কোডটি ব্যবহার করে চুরি করবেন:

// This is a function similar to the jQuery 1.4 $.isEmptyObject.
function isObjectEmpty(obj) {
  for ( var name in obj ) {
    return false;
  }
  return true;
}

এটি ব্যবহার করুন:

console.log(isObjectEmpty(the_object)); // Returns true or false.

এটি প্রশ্নের সমাধান করে না।
স্যাম

5

আপনি যা নির্বাচন করেন তা বিবেচনা না করেই ফাংশনটি $()সর্বদা একটি jQuery অবজেক্ট দেয় যাতে পরীক্ষার জন্য পোষাক ব্যবহার করা যায় না। size()উপরে বর্ণিত হিসাবে ফাংশন বা নেটিভ দৈর্ঘ্যের সম্পত্তিটি ব্যবহার করা এখনও সবচেয়ে ভাল উপায় (একমাত্র না হলে) ।

if ( $('selector').size() ) {...}                   

3
if ( $('#whatever')[0] ) {...}

সমস্ত নেটিভ jQuery পদ্ধতি দ্বারা ফিরে আসা jQuery অবজেক্টটি একটি অ্যারে নয়, এটি অনেকগুলি বৈশিষ্ট্যযুক্ত একটি বস্তু; তাদের মধ্যে একটি "দৈর্ঘ্য" সম্পত্তি হচ্ছে। আপনি আকার () বা চেক (0) বা () পেতে () পেতে পারেন ('(0)' প্রথম উপাদান অ্যাক্সেস করার মতো একই কাজ করে, যেমন $ (এলেম) [0]



1

$("#selector").get(0)নাল দিয়ে চেক করতে ব্যবহার করুন । ডোম উপাদানটি ফেরত পান, ততক্ষণ আপনি কোনও অ্যারে নিয়ে কাজ করছেন, যেখানে আপনাকে দৈর্ঘ্যের সম্পত্তিটি পরীক্ষা করতে হবে। নাল হ্যান্ডলিংয়ের জন্য আমি ব্যক্তিগতভাবে দৈর্ঘ্যের চেক পছন্দ করি না, এটি কোনও কারণে আমাকে বিভ্রান্ত করে :)


এটি বিভিন্ন আকর্ষণীয় যেভাবে বিভিন্ন ব্যক্তি আলাদাভাবে চিন্তা করে; আমি মনে করি এটি প্রথম উপাদান উপস্থিত আছে কিনা তা পরীক্ষা করার পরিবর্তে উপাদানগুলির সংখ্যা শূন্য কিনা তা পরীক্ষা করে আরও বুদ্ধিমান হতে পারে।
স্যাম

1

দৈর্ঘ্যের সম্পত্তি ব্যবহার করে আপনি এটি করতে পারেন।

jQuery.fn.exists = function(){return ($(this).length < 0);}
if ($(selector).exists()) { 
   //do somthing
}

2
আপনার মানে (এটি) দৈর্ঘ্য> 0?
সেজে 88

0

যখন অবজেক্টটি খালি থাকে তখন এই ত্রুটিটি ফিরিয়ে দিন:

Uncaught TypeError: Cannot read property '0' of null

আমি এই কোডটি চেষ্টা করে দেখি:

try{
  if ($("#btext" + i).length) {};               
}catch(err){
  if ($("#btext" + i).length) {
     //working this code if the item, not NULL 
   }
}


-7

অপরিজ্ঞাত বা নাল বস্তুতে দৈর্ঘ্যের সম্পত্তি কল করার ফলে আইই এবং ওয়েবকিট ব্রাউজারগুলি ব্যর্থ হতে পারে!

পরিবর্তে এটি চেষ্টা করুন:

if($("#something") !== null){
  // do something
}

অথবা

if($("#something") === null){
  // don't do something
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.