আমি কীভাবে jQuery এ কোনও উপাদানটির অস্তিত্ব পরীক্ষা করতে পারি?
আমার কাছে বর্তমান কোডটি হ'ল:
if ($(selector).length > 0) {
// Do something
}
এর কাছে যাওয়ার আরও কি আরও সুন্দর উপায় আছে? সম্ভবত একটি প্লাগইন বা একটি ফাংশন?
আমি কীভাবে jQuery এ কোনও উপাদানটির অস্তিত্ব পরীক্ষা করতে পারি?
আমার কাছে বর্তমান কোডটি হ'ল:
if ($(selector).length > 0) {
// Do something
}
এর কাছে যাওয়ার আরও কি আরও সুন্দর উপায় আছে? সম্ভবত একটি প্লাগইন বা একটি ফাংশন?
উত্তর:
জাভাস্ক্রিপ্টে, সমস্ত কিছু 'সত্যবাদী' বা 'মিথ্যাবাদী' এবং সংখ্যার জন্য 0
(এবং এনএএন ) অর্থ false
, সমস্ত কিছু true
। সুতরাং আপনি লিখতে পারেন:
if ($(selector).length)
আপনার সেই >0
অংশের দরকার নেই ।
NaN != false
।
[] + []
= ""
... আহ আমি জাভাস্ক্রিপ্ট পছন্দ করি
[].toString() === [].join(',') === ""
এবং "" === ""
।
typeof NaN == 'number'
হ্যাঁ!
jQuery.fn.exists = function(){ return this.length > 0; }
if ($(selector).exists()) {
// Do something
}
এটির প্রতিক্রিয়া: জেফ আতউডের সাথে হার্ডিং কোড পডকাস্ট
$.fn.exists
উদাহরণটি দুটি ফাংশন কলগুলির সাথে একটি সম্পত্তি অনুসন্ধান (সস্তা!) প্রতিস্থাপন করছে - যা অনেক বেশি ব্যয়বহুল — এবং এই ফাংশন কলগুলির মধ্যে একটি আপনার কাছে ইতিমধ্যে থাকা একটি jQuery অবজেক্টটিকে পুনরায় তৈরি করে, যা কেবল নিরীহ।
.exists
পরিষ্কার পরিচ্ছন্নভাবে পড়ে, যদিও .length
শব্দার্থকগুলি অভিন্ন ফলাফলের সাথে মিল থাকলেও শব্দার্থগতভাবে আলাদা কিছু হিসাবে পড়ে।
আপনি যদি ব্যবহার
jQuery.fn.exists = function(){return ($(this).length > 0);}
if ($(selector).exists()) { }
আপনি বোঝাবেন যে শৃঙ্খলা সম্ভব ছিল যখন এটি ছিল না।
এটি আরও ভাল হবে:
jQuery.exists = function(selector) {return ($(selector).length > 0);}
if ($.exists(selector)) { }
বিকল্পভাবে, এফএকিউ থেকে :
if ( $('#myDiv').length ) { /* Do something */ }
আপনি নিম্নলিখিত ব্যবহার করতে পারেন। যদি jQuery অবজেক্ট অ্যারেতে কোনও মান থাকে না তবে অ্যারেতে প্রথম আইটেমটি পাওয়া অপরিবর্তিত থাকবে।
if ( $('#myDiv')[0] ) { /* Do something */ }
$(".missing").css("color", "red")
ইতিমধ্যে সঠিক জিনিসটি করেছে ... (অর্থাত্ কিছুই নেই)
$.fn
পদ্ধতি রয়েছে যা একটি নতুন jQuery অবজেক্ট ছাড়া অন্য কিছু ফিরিয়ে দেয় এবং তাই শৃঙ্খলিত হয় না।
আপনি এটি ব্যবহার করতে পারেন:
// if element exists
if($('selector').length){ /* do something */ }
// if element does not exist
if(!$('selector').length){ /* do something */ }
অস্তিত্বের জন্য যাচাইয়ের দ্রুত এবং সর্বাধিক শব্দার্থগতভাবে স্ব-ব্যাখ্যা করার উপায়টি হল সরল ব্যবহার করে JavaScript
:
if (document.getElementById('element_id')) {
// Do something
}
JQuery দৈর্ঘ্যের বিকল্পের চেয়ে লেখার জন্য এটি কিছুটা দীর্ঘ, তবে এটি একটি স্থানীয় জেএস পদ্ধতি হওয়ায় দ্রুত কার্যকর হয় utes
এবং এটি আপনার নিজের jQuery
ফাংশন লেখার বিকল্পের চেয়ে ভাল । এই বিকল্পটি ধীরে ধীরে, কারণ হিসাবে @ স্নোভার জানিয়েছে। তবে এটি অন্যান্য প্রোগ্রামারদেরও এই ধারণা দেয় যে exists()
ফাংশনটি jQuery এর অন্তর্নিহিত কিছু। JavaScript
জ্ঞান increasedণ বৃদ্ধি না করে অন্যরা আপনার কোড সম্পাদনা করে / বুঝে নেওয়া উচিত।
এনবি: এর আগে '#' এর অভাব লক্ষ্য করুন element_id
(যেহেতু এটি সাধারণ জেএস, না jQuery
)।
$('#foo a.special')
। এবং এটি একাধিক উপাদানকে ফিরিয়ে দিতে পারে। getElementById
যে কাছে যেতে শুরু করতে পারে না।
if(document.querySelector("#foo a.special"))
কাজ করবে। কোন jQuery প্রয়োজন।
আপনি লিখে কিছু বাইট সংরক্ষণ করতে পারেন:
if ($(selector)[0]) { ... }
এই কাজ কারণ প্রতিটি jQuery এর অবজেক্ট এছাড়াও masquerades একটি অ্যারে হিসাবে, তাই আমরা অ্যারে dereferencing অপারেটর ব্যবহার থেকে প্রথম আইটেম পেতে পারেন অ্যারে । undefined
নির্দিষ্ট সূচকে কোনও আইটেম না থাকলে এটি ফিরে আসে ।
jQuery.first()
বা jQuery.eq(0)
উভয়ই প্রত্যাবর্তনযোগ্য বস্তু, বস্তুগুলি খালি ইশ হলেও সত্যবাদী। এই উদাহরণটি ব্যাখ্যা করবে যে এই ফাংশনগুলি যেমন রয়েছে তেমন ব্যবহার করা যাবে না:if(jQuery("#does-not-exist").eq(0)) alert("#does-not-exist exists")
.eq(0)
আয় শুধু আরেকটি jQuery এর অবজেক্ট দৈর্ঘ্য 1 সংক্ষিপ্ত বা 0. .first()
জন্য শুধু একটি সুবিধার্থে পদ্ধতি .eq(0)
। কিন্তু .get(0)
প্রথম DOM উপাদান ফেরৎ বা undefined
এবং হিসাবে একই [0]
। কোনও jQuery অবজেক্টের প্রথম ডোম উপাদানটি নিয়মিত অবজেক্ট প্রোপার্টি নাম সহ সঞ্চিত থাকে '0'
। এটি একটি সাধারণ সম্পত্তি অ্যাক্সেস। একমাত্র প্রকারের ingালাইয়ের সংখ্যাটি 0
স্ট্রিংয়ের সংখ্যার অন্তর্ভুক্ত রূপান্তর থেকে শুরু করে '0'
। সুতরাং টাইপ কাস্টিং যদি সমস্যা হয় তবে আপনি তার $.find(selector)['0']
পরিবর্তে ব্যবহার করতে পারেন ।
তুমি ব্যবহার করতে পার:
if ($(selector).is('*')) {
// Do something
}
একজন সামান্য আরো মার্জিত, সম্ভবত।
666
সম্ভবত অন্যান্য প্রচুর কারণ রয়েছে। যদিও এটা একটি অবৈধ নির্বাচক হয়, $ (666) .length বৈধ জাভাস্ক্রিপ্ট হয় : এটা truthy মূল্যায়ণ, সেইজন্য এবং উচিত শর্ত সন্তুষ্ট।
$.find(666).length
কাজ করে।
এই প্লাগইনটি কলব্যাকের if
মতো if ($(ele).exist()) { /* DO WORK */ }
বা ব্যবহারের মতো কোনও বিবৃতিতে ব্যবহার করা যেতে পারে ।
;;(function($) {
if (!$.exist) {
$.extend({
exist: function() {
var ele, cbmExist, cbmNotExist;
if (arguments.length) {
for (x in arguments) {
switch (typeof arguments[x]) {
case 'function':
if (typeof cbmExist == "undefined") cbmExist = arguments[x];
else cbmNotExist = arguments[x];
break;
case 'object':
if (arguments[x] instanceof jQuery) ele = arguments[x];
else {
var obj = arguments[x];
for (y in obj) {
if (typeof obj[y] == 'function') {
if (typeof cbmExist == "undefined") cbmExist = obj[y];
else cbmNotExist = obj[y];
}
if (typeof obj[y] == 'object' && obj[y] instanceof jQuery) ele = obj[y];
if (typeof obj[y] == 'string') ele = $(obj[y]);
}
}
break;
case 'string':
ele = $(arguments[x]);
break;
}
}
}
if (typeof cbmExist == 'function') {
var exist = ele.length > 0 ? true : false;
if (exist) {
return ele.each(function(i) { cbmExist.apply(this, [exist, ele, i]); });
}
else if (typeof cbmNotExist == 'function') {
cbmNotExist.apply(ele, [exist, ele]);
return ele;
}
else {
if (ele.length <= 1) return ele.length > 0 ? true : false;
else return ele.length;
}
}
else {
if (ele.length <= 1) return ele.length > 0 ? true : false;
else return ele.length;
}
return false;
}
});
$.fn.extend({
exist: function() {
var args = [$(this)];
if (arguments.length) for (x in arguments) args.push(arguments[x]);
return $.exist.apply($, args);
}
});
}
})(jQuery);
আপনি এক বা দুটি কলব্যাক নির্দিষ্ট করতে পারেন। উপাদান উপস্থিত থাকলে প্রথমটি অগ্নিকাণ্ড করবে, দ্বিতীয়টি অস্তিত্ব না থাকলে আগুন নেবে fire তবে, আপনি যদি কেবল একটি ফাংশন পাস করতে চান, তবে উপাদানটি উপস্থিত থাকলে তা কেবল আগুনে ছড়িয়ে পড়ে। সুতরাং, নির্বাচিত উপাদানটি উপস্থিত না থাকলে চেইনটি মারা যাবে । অবশ্যই এটি উপস্থিত থাকলে প্রথম ফাংশনটি চালিত হবে এবং চেইনটি অবিরত থাকবে।
মনে রাখবেন যে কলব্যাক বৈকল্পিকটি ব্যবহার করা চেইনবিলিটি বজায় রাখতে সহায়তা করে - উপাদানটি ফিরে আসে এবং আপনি অন্য কোনও jQuery পদ্ধতির মতো কমান্ড শৃঙ্খলা চালিয়ে যেতে পারেন!
if ($.exist('#eleID')) { /* DO WORK */ } // param as STRING
if ($.exist($('#eleID'))) { /* DO WORK */ } // param as jQuery OBJECT
if ($('#eleID').exist()) { /* DO WORK */ } // enduced on jQuery OBJECT
$.exist('#eleID', function() { // param is STRING && CALLBACK METHOD
/* DO WORK */
/* This will ONLY fire if the element EXIST */
}, function() { // param is STRING && CALLBACK METHOD
/* DO WORK */
/* This will ONLY fire if the element DOES NOT EXIST */
})
$('#eleID').exist(function() { // enduced on jQuery OBJECT with CALLBACK METHOD
/* DO WORK */
/* This will ONLY fire if the element EXIST */
})
$.exist({ // param is OBJECT containing 2 key|value pairs: element = STRING, callback = METHOD
element: '#eleID',
callback: function() {
/* DO WORK */
/* This will ONLY fire if the element EXIST */
}
})
Has Items
কলব্যাকটি আসলে কোনও আর্গুমেন্ট হিসাবে আর্গুমেন্ট হিসাবে পাস করা উচিত নয় ?
আমি দেখতে পাচ্ছি এখানে বেশিরভাগ উত্তরগুলি যেমন হওয়া উচিত ঠিক তেমন সঠিক নয় , তারা উপাদান দৈর্ঘ্যটি পরীক্ষা করে, এটি অনেক ক্ষেত্রে ঠিক হতে পারে তবে 100% নয় , কল্পনা করুন এর পরিবর্তে সংখ্যাটি ফাংশনে পাস হয় কিনা, তাই আমি কোনও ফাংশন প্রোটোটাইপ করি যা সমস্ত পরীক্ষা করে শর্তাবলী এবং উত্তরটি যেমনটি হওয়া উচিত তেমন ফেরত দিন:
$.fn.exists = $.fn.exists || function() {
return !!(this.length && (this[0] instanceof HTMLDocument || this[0] instanceof HTMLElement));
}
এটি দৈর্ঘ্য এবং প্রকার উভয়ই পরীক্ষা করবে, এখন আপনি এটি এইভাবে চেক করতে পারেন:
$(1980).exists(); //return false
$([1,2,3]).exists(); //return false
$({name: 'stackoverflow', url: 'http://www.stackoverflow.com'}).exists(); //return false
$([{nodeName: 'foo'}]).exists() // returns false
$('div').exists(); //return true
$('.header').exists(); //return true
$(document).exists(); //return true
$('body').exists(); //return true
সত্যিই jQuery জন্য কোন প্রয়োজন নেই। সাধারণ জাভাস্ক্রিপ্টের সাহায্যে এটি পরীক্ষা করা সহজ এবং শব্দার্থগতভাবে সঠিক:
if(document.getElementById("myElement")) {
//Do something...
}
যদি কোনও কারণে আপনি উপাদানটিতে কোনও আইডি রাখতে চান না, আপনি এখনও ডিওএম অ্যাক্সেস করার জন্য ডিজাইন করা অন্য কোনও জাভাস্ক্রিপ্ট পদ্ধতি ব্যবহার করতে পারেন।
jQuery সত্যিই দুর্দান্ত, তবে খাঁটি জাভাস্ক্রিপ্টটি বিস্মৃত হতে দেবেন না ...
:has()
?
পূর্ববর্তী সমস্ত উত্তরগুলির .length
প্যারামিটারের প্রয়োজনীয়তার কারণ হ'ল তারা বেশিরভাগই $()
জ্যাকুরির নির্বাচক ব্যবহার করছেন যাতে পর্দার পিছনে ক্যোয়ারী নির্বাচনকারী সব রয়েছে (বা তারা এটি সরাসরি ব্যবহার করছেন)। এই পদ্ধতিটি বরং ধীরে ধীরে কারণ এটির জন্য নির্বাচকের সাথে সমস্ত ম্যাচ সন্ধান করে এবং তাদের সাথে একটি অ্যারে তৈরি করে পুরো ডিওএম গাছকে বিশ্লেষণ করতে হবে ।
['দৈর্ঘ্য'] প্যারামিটারটির প্রয়োজন বা দরকারী নয় এবং কোডটি যদি আপনি document.querySelector(selector)
পরিবর্তে সরাসরি ব্যবহার করেন তবে কোডটি আরও দ্রুত হবে কারণ এটি প্রথম উপাদানটি মেলে বা যদি খুঁজে না পাওয়া যায় তবে এটি বাতিল করে।
function elementIfExists(selector){ //named this way on purpose, see below
return document.querySelector(selector);
}
/* usage: */
var myelement = elementIfExists("#myid") || myfallbackelement;
তবে এই পদ্ধতিটি আমাদের আসল বস্তুটি ফিরে আসার সাথে ছেড়ে দেয়; যা ঠিক আছে যদি এটি পরিবর্তনশীল হিসাবে সংরক্ষণ করা হয় না এবং বারবার ব্যবহৃত হয় (সুতরাং আমরা ভুলে গেলে রেফারেন্সটি চারদিকে রাখি)।
var myel=elementIfExists("#myid");
// now we are using a reference to the element which will linger after removal
myel.getParentNode.removeChild(myel);
console.log(elementIfExists("#myid")); /* null */
console.log(myel); /* giant table lingering around detached from document */
myel=null; /* now it can be garbage collected */
কিছু ক্ষেত্রে এটি পছন্দসই হতে পারে। এটি এর মতো লুপের জন্য ব্যবহার করা যেতে পারে:
/* locally scoped myel gets garbage collected even with the break; */
for (var myel; myel = elementIfExist(sel); myel.getParentNode.removeChild(myel))
if (myel == myblacklistedel) break;
আপনার যদি আসলে উপাদানটির প্রয়োজন না হয় এবং কেবল একটি সত্য / মিথ্যা / সঞ্চয় করতে চান তবে এটি দ্বিগুণ নয় !! এটি এমন জুতোগুলির জন্য কাজ করে যা অবিরত হয়, তাই এখানে কেন গিঁট?
function elementExists(selector){
return !!document.querySelector(selector);
}
/* usage: */
var hastables = elementExists("table"); /* will be true or false */
if (hastables){
/* insert css style sheet for our pretty tables */
}
setTimeOut(function (){if (hastables && !elementExists("#mytablecss"))
alert("bad table layouts");},3000);
আপনি $.contains()
কি চান?
jQuery.contains( container, contained )
$.contains()
পদ্ধতি ফেরৎ সত্য যদি দ্বিতীয় যুক্তি দ্বারা উপলব্ধ DOM উপাদান প্রথম আর্গুমেন্ট দ্বারা উপলব্ধ DOM উপাদান বংশধর হয়, তা সরাসরি সন্তান বা তার বেশি গভীরভাবে নেস্টেড। অন্যথায়, এটি মিথ্যা প্রত্যাবর্তন করে। কেবলমাত্র এলিমেন্ট নোডগুলি সমর্থিত; দ্বিতীয় যুক্তি যদি কোনও পাঠ্য বা মন্তব্য নোড হয় তবে$.contains()
তা মিথ্যা হবে।দ্রষ্টব্য : প্রথম যুক্তিটি অবশ্যই একটি ডিওএম উপাদান হতে হবে, কোনও জিকুয়েরি অবজেক্ট বা সরল জাভাস্ক্রিপ্ট অবজেক্ট নয়।
আমি if ($(selector).length) {}
অপর্যাপ্ত বলে মনে করেছি। এটি selector
কোনও শূন্য বস্তু হয়ে গেলে নিঃশব্দে আপনার অ্যাপ্লিকেশনটি ভেঙে দেবে {}
।
var $target = $({});
console.log($target, $target.length);
// Console output:
// -------------------------------------
// [▼ Object ] 1
// ► __proto__: Object
আমার একমাত্র পরামর্শ হ'ল অতিরিক্ত চেক করা {}
।
if ($.isEmptyObject(selector) || !$(selector).length) {
throw new Error('Unable to work with the given selector.');
}
আমি এখনও আরও ভাল সমাধানের জন্য খুঁজছি যদিও এটি একরকম ভারী।
সম্পাদনা: সতর্কতা! যখন selector
স্ট্রিং হয় তখন এটি IE এ কাজ করে না ।
$.isEmptyObject('hello') // FALSE in Chrome and TRUE in IE
$()
আর্গুমেন্ট হিসাবে খালি বস্তুর সাথে কল করতে দেখেন ?
{}
করবেন $()
?
আপনি জাভা স্ক্রিপ্টে দৈর্ঘ্যটি ব্যবহার করছেন বা ব্যবহার করছেন না তা পরীক্ষা করতে পারেন। দৈর্ঘ্য যদি শূন্যের চেয়ে বেশি হয় তবে দৈর্ঘ্য শূন্য হলে উপাদান উপস্থিত থাকে তবে উপাদান উপস্থিত থাকে না is
// These by Id
if ($("#elementid").length > 0) {
// Element is Present
} else {
// Element is not Present
}
// These by Class
if ($(".elementClass").length > 0) {
// Element is Present
} else {
// Element is not Present
}
কোনও উপাদানটির অস্তিত্বের জন্য অনুসন্ধান করা সরকারী jQuery ওয়েবসাইটে নিজেই ঝরঝরে ডকুমেন্টেড!
আপনার নির্বাচক দ্বারা ফেরত jQuery সংগ্রহের দৈর্ঘ্যের বৈশিষ্ট্যটি ব্যবহার করুন :
if ($("#myDiv").length) { $("#myDiv").show(); }
মনে রাখবেন যে কোনও উপাদান রয়েছে কিনা তা পরীক্ষা করা সবসময় প্রয়োজন হয় না। নিম্নলিখিত কোডটি বিদ্যমান থাকলে উপাদানটি প্রদর্শন করবে এবং যদি তা না থাকে তবে কিছুই না করে (কোনও ত্রুটি ছাড়াই):
$("#myDiv").show();
এটি সমস্ত উত্তরগুলির সাথে খুব মিল, তবে কেন !
অপারেটরটি দু'বার ব্যবহার করবেন না যাতে আপনি বুলিয়ান পান:
jQuery.fn.exists = function(){return !!this.length};
if ($(selector).exists()) {
// the element exists, now what?...
}
$(selector).length && //Do something
if
এমন কোনও ব্যবহারকে এড়িয়ে চলা এই ঘৃণ্য উপায়গুলি ঘৃণা করি if
।
DOM
উপাদানটির জন্য পরীক্ষার চেষ্টা করুন
if (!!$(selector)[0]) // do stuff
হাইওয়ের উত্তরে অনুপ্রাণিত হয়ে আমি নিম্নলিখিতগুলি নিয়ে এসেছি:
$.fn.exists = function() {
return $.contains( document.documentElement, this[0] );
}
jQuery.contains দুটি ডোম উপাদান নেয় এবং প্রথমটিতে দ্বিতীয়টি রয়েছে কিনা তা পরীক্ষা করে।
document.documentElement
প্রথম আর্গুমেন্ট হিসাবে ব্যবহার করা এর শব্দার্থকে পরিপূর্ণ করেexists
পদ্ধতিটির যখন আমরা বর্তমান নথিতে কোনও উপাদানটির অস্তিত্ব পরীক্ষা করতে এটি প্রয়োগ করতে চাই।
নীচে, আমি একসঙ্গে একটি স্নিপেট যে তুলনা রেখেছি jQuery.exists()
বিরুদ্ধে $(sel)[0]
এবং $(sel).length
যা উভয় রিটার্ন পন্থা truthy
মান $(4)
যখন $(4).exists()
আয় false
। ডোমটিতে কোনও উপাদানটির অস্তিত্বের জন্য যাচাই করার প্রসঙ্গে এটি পছন্দসই ফলাফল বলে মনে হয় ।
JQuery (বুনিয়াদি সমাধান) প্রয়োজন নেই
if(document.querySelector('.a-class')) {
// do something
}
নীচে আরও অনেক পারফরম্যান্ট বিকল্প (কোনও শ্রেণির আগে ডটের অভাব লক্ষ্য করুন)।
if(document.getElementsByClassName('a-class')[0]) {
// do something
}
ক্যোরিসারেক্টর jQuery এ matching () (সিজল) এর মতো উপযুক্ত ম্যাচিং ইঞ্জিন ব্যবহার করে এবং আরও বেশি কম্পিউটিং শক্তি ব্যবহার করে তবে 99% ক্ষেত্রে ঠিক জরিমানা করবে। দ্বিতীয় বিকল্পটি আরও স্পষ্ট এবং কোডটি ঠিক কী করতে হবে তা বলে। এটি jsperf অনুযায়ী অনেক দ্রুত https://jsperf.com/geteitionsbyclassname-vs-queryselectorall/25
এটি করার জন্য আমি কেবল সরল ভ্যানিলা জাভাস্ক্রিপ্ট ব্যবহার করতে চাই।
function isExists(selector){
return document.querySelectorAll(selector).length>0;
}
আমি এই প্রশ্নটিতে হোঁচট খেয়েছি এবং আমি বর্তমানে ব্যবহার করা কোডের স্নিপেটটি ভাগ করতে চাই:
$.fn.exists = function(callback) {
var self = this;
var wrapper = (function(){
function notExists () {}
notExists.prototype.otherwise = function(fallback){
if (!self.length) {
fallback.call();
}
};
return new notExists;
})();
if(self.length) {
callback.call();
}
return wrapper;
}
এবং এখন আমি এই জাতীয় কোড লিখতে পারি -
$("#elem").exists(function(){
alert ("it exists");
}).otherwise(function(){
alert ("it doesn't exist");
});
এটি অনেকটা কোড মনে হতে পারে তবে কফিস্ক্রিপ্টে যখন লেখা হয় তখন তা বেশ ছোট থাকে:
$.fn.exists = (callback) ->
exists = @length
callback.call() if exists
new class
otherwise: (fallback) ->
fallback.call() if not exists
আমার একটি কেস ছিল যেখানে আমি দেখতে চেয়েছিলাম যে কোনও বস্তুর ভিতরে অন্যের উপস্থিতি আছে কিনা তাই আমি নির্বাচকের ভিতরে নির্বাচকের জন্য যাচাই করার জন্য প্রথম উত্তরে কিছু যুক্ত করেছি ..
// Checks if an object exists.
// Usage:
//
// $(selector).exists()
//
// Or:
//
// $(selector).exists(anotherSelector);
jQuery.fn.exists = function(selector) {
return selector ? this.find(selector).length : this.length;
};
কেমন:
function exists(selector) {
return $(selector).length;
}
if (exists(selector)) {
// do something
}
এটি খুব ন্যূনতম এবং $()
প্রতিবারের সাথে আপনাকে নির্বাচককে ঘেরানো বাঁচায় ।
if($("#thing").exists(){}
হিসাবে এটি পড়ে which এছাড়াও, এটি jQuery উপায় নয়।
আমি এটি ব্যবহার করছি:
$.fn.ifExists = function(fn) {
if (this.length) {
$(fn(this));
}
};
$("#element").ifExists(
function($this){
$this.addClass('someClass').animate({marginTop:20},function(){alert('ok')});
}
);
কোনও জিক্যুরি উপাদান উপস্থিত থাকলে কেবল চেইনটি কার্যকর করুন - http://jsfiddle.net/andres_314/vbNM3/2/
এখানে exist
jQuery আমার প্রিয় পদ্ধতি
$.fn.exist = function(callback) {
return $(this).each(function () {
var target = $(this);
if (this.length > 0 && typeof callback === 'function') {
callback.call(target);
}
});
};
এবং অন্যান্য সংস্করণ যা নির্বাচক উপস্থিত নেই যখন কলব্যাক সমর্থন করে
$.fn.exist = function(onExist, onNotExist) {
return $(this).each(function() {
var target = $(this);
if (this.length > 0) {
if (typeof onExist === 'function') {
onExist.call(target);
}
} else {
if (typeof onNotExist === 'function') {
onNotExist.call(target);
}
}
});
};
উদাহরণ:
$('#foo .bar').exist(
function () {
// Stuff when '#foo .bar' exists
},
function () {
// Stuff when '#foo .bar' does not exist
}
);
$("selector"
) length
সম্পত্তি আছে এমন একটি বস্তু প্রদান করে । যদি নির্বাচক কোনও উপাদান খুঁজে পায় তবে সেগুলি বস্তুটিতে অন্তর্ভুক্ত করা হবে। সুতরাং আপনি যদি এর দৈর্ঘ্য পরীক্ষা করেন তবে দেখতে পারেন কোনও উপাদান রয়েছে কিনা। জাভাস্ক্রিপ্টে 0 == false
, সুতরাং আপনি না পেলে 0
আপনার কোডটি চলবে।
if($("selector").length){
//code in the case
}
এখানে বিভিন্ন পরিস্থিতি এবং জ্যাকুয়েরির নির্বাচক নির্বাচিত কাজ করতে পারে বা না পারে কারণ এটি অ্যারে বা উপাদানগুলি ফেরত দেয় যদি না পারে তবে সরাসরি ব্যবহার করে উপাদান উপস্থিত রয়েছে কিনা তা যাচাই করার সম্পূর্ণ উদাহরণ is
var a = null;
var b = []
var c = undefined ;
if(a) { console.log(" a exist")} else { console.log("a doesn't exit")}
// output: a doesn't exit
if(b) { console.log(" b exist")} else { console.log("b doesn't exit")}
// output: b exist
if(c) { console.log(" c exist")} else { console.log("c doesn't exit")}
// output: c doesn't exit
চূড়ান্ত সমাধান
if($("#xysyxxs").length){ console.log("xusyxxs exist")} else { console.log("xusyxxs doesnn't exist") }
//output : xusyxxs doesnn't exist
if($(".xysyxxs").length){ console.log("xusyxxs exist")} else { console.log("xusyxxs doesnn't exist") }
//output : xusyxxs doesnn't exist
আপনি যদি এটা তার চেয়ে অনেক বেশী পরীক্ষা হবে না 0
মত $(selector).length > 0
, $(selector).length
এটা যথেষ্ট এবং মার্জিত উপায় উপাদানের অস্তিত্ব বার করো। হ্যাঁ, আপনি যদি অতিরিক্ত অতিরিক্ত কিছু করতে চান তবে কেবল এটির জন্য একটি ফাংশন লিখাই ভাল বলে আমি মনে করি না।
if($(selector).length){
// true if length is not 0
} else {
// false if length is 0
}