এইচটিএমএল উপাদান jQuery ব্যবহার করে খালি কিনা তা আমি কীভাবে চেক করব?


336

আমি jQuery ব্যবহার করে কেবল কোনও HTML উপাদান খালি থাকলে কোনও ফাংশনকে কল করার চেষ্টা করছি।

এটার মতো কিছু:

if (isEmpty($('#element'))) {
    // do something
}

$('#elem').text().match(/\S/) || alert('empty');
থাইলিসিয়াস

উত্তর:


557
if ($('#element').is(':empty')){
  //do something
}

আরও তথ্যের জন্য দেখুন http://api.jquery.com/is/ এবং http://api.jquery.com/empty-selector/

সম্পাদনা করুন:

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

  function isEmpty( el ){
      return !$.trim(el.html())
  }
  if (isEmpty($('#element'))) {
      // do something
  }

আপনি এটিকে একটি jQuery প্লাগইন তৈরি করতে পারেন, তবে আপনি ধারণা পাবেন।


56
লাইন বিরতি এফএফ এবং ক্রোমের উপাদানগুলির বিষয়বস্তু হিসাবে বিবেচিত হয়।
কর্নেলিউ

@ কর্নেলিউ সঠিক আমি নীচে একটি উত্তর পোস্ট করেছি যা এটি বিবেচনায় নিয়েছে। সাম্প্রতিক প্রকল্পে এটি আমার জন্য হতাশার একটি প্রধান উত্স ছিল
ডিএমটিন্টনার

2
এটি উজ্জ্বল :-D
জেসনব্রেডবেরি

এইচটিএমএল মন্তব্যগুলি বিষয়বস্তু হিসাবে বিবেচিত হয়।
পাওলো

একটি ফাংশন দিয়ে এটি করা অবশ্যই দুর্দান্ত, তবে আপনি যদি এটি আরও "এম্বেড" (এবং কিছুটা চ্যালেঞ্জিং) করতে চান তবে আমি jQuery এর প্রোটোটাইপ হেরফের বা জ্যাকিউর দুর্দান্ত "ফিল্টার" ফাংশন ক্ষমতা ব্যবহার করার সুপারিশ করব ...
TheCuBeMan

117

আমি এটি একমাত্র নির্ভরযোগ্য উপায় হিসাবে খুঁজে পেয়েছি (যেহেতু ক্রোম এবং এফএফ হোয়াইটস্পেস এবং লাইন ব্রেকগুলি উপাদান হিসাবে বিবেচনা করে):

if($.trim($("selector").html())=='')

20
কিছুটা সংকুচিত সংস্করণ খালি স্ট্রিংয়ের মিথ্যা-নেসের সুবিধা নিতে পারে: if(!$.trim($("selector").html())
ব্র্যান্ডন বেলভিন

11
আমি তাদের "উপাদান" হিসাবে বিবেচনা করি না বলে মনে করি না, তবে তারা সেগুলি নোড হিসাবে বিবেচনা করে, যা আইএমও সঠিক। আপনিও করতে পারেন if($("selector").children().length === 0)বা if($("selector > *").length === 0)
পানজি

1
আমি মনে করি আপনি "নোডগুলি" দিয়ে "উপাদানগুলি" বিভ্রান্ত করছেন।

1
"(" নির্বাচক ")। এইচটিএমএল ()। ট্রিম () === ''
ব্যবহারকারী 1156544

1
কেন জানি না তবে এই উত্তরটি থেকে পদ্ধতি: যদি ($। ট্রিম (select ("নির্বাচক")। Html ()) == '') কাজ করেছে। .is (': খালি') না!
জেলজকো মিলোরাডোভিক

62

সাদা স্থান এবং লাইন বিরতি ব্যবহার করে প্রধান সমস্যা: খালি নির্বাচক। যত্নবান, সিএসএসে: খালি সিউডো ক্লাস একইভাবে আচরণ করে। আমি এই পদ্ধতিটি পছন্দ করি:

if ($someElement.children().length == 0){
     someAction();
}

4
আমি উপরে এটি চয়ন করেছি কারণ আমার ডিআইভিতে আমার এইচটিএমএল মন্তব্য ছিল।
পাওলো

2
এখনও পর্যন্ত সবচেয়ে মার্জিত সমাধানের সঠিক উত্তর হওয়া উচিত।
ক্রিস্টোফার বুবাচ

6
দ্রষ্টব্য যে $.children()পাঠ্য বা মন্তব্য নোডগুলি ফেরৎ না, যার অর্থ এই সমাধানটি কেবলমাত্র চেক করে তোলে উপাদান উপাদানগুলির খালি । যদি কেবলমাত্র পাঠ্য বা মন্তব্যগুলিতে থাকা কোনও উপাদানটি আপনার প্রয়োজনের জন্য খালি বিবেচনা করা উচিত না , তবে আপনার অন্য সমাধানগুলির মধ্যে একটি ব্যবহার করা উচিত।
sierrasdetandil

@ সিয়েরাসডেট্যান্ডিল selectউপাদানগুলির জন্য নিখুঁত শর্তটিও হতে পারে if(! $el.children().length)
সিপিএইচপিথন

28
!elt.hasChildNodes()

হ্যাঁ, আমি জানি, এটি jQuery নয়, তাই আপনি এটি ব্যবহার করতে পারেন:

!$(elt)[0].hasChildNodes()

এখন সুখি?


1
+1 আমি আপনার পন্থাটি jQuery filterফাংশনের অভ্যন্তরে ব্যবহার করেছি কারণ আমি প্রয়োজন না হলে ফাংশনের ভিতরে jQuery ব্যবহার করতে চাই না।
WynandB

1
আমি যদি হোয়াইটস্পেসকে কেবল খালি মনে করি তবে <div class="results"> </div>এই বিবৃতিটি মিথ্যা প্রত্যাবর্তন করবে। jsfiddle.net/ytliuSVN/0pdwLt46
পেনি লিউ

19
jQuery.fn.doSomething = function() {
   //return something with 'this'
};

$('selector:empty').doSomething();

গ্রেট! আমি আইএফএস ছাড়াই নির্মাণ পছন্দ করি।
নিকোলে ফমিনিহ

@ নিকোলায় সম্পূর্ণরূপে একমত, এটি আমার নির্দিষ্ট পরিস্থিতির পক্ষে কার্যকর নয় তবে আমি এটি ভবিষ্যতের জন্য মনে রাখব!
ভিটো

ভাল, যখন আপনি 'এটি' প্রয়োগ করতে হবে তখন এটি কাজ করবে না
জিল মুরপা

thisজিকুয়ারি উপাদান @ জিলমুরপা ছাড়া আর কী থাকতে পারে?
AlienWebguy

12

যদি "খালি" হয়ে থাকে, আপনি কোনও HTML সামগ্রী সহ বোঝাতে চাইছেন না,

if($('#element').html() == "") {
  //call function
}

সাবধান, সাদা স্থান এবং লাইন ব্রেকগুলি এইচটিএমএলকে == '' না করার কারণ হতে পারে তবে উপাদান এখনও খালি রয়েছে। অন্য একটি সমাধানের জন্য নীচে আমার উত্তরটি দেখুন
DMTintner

8

খালি হিসাবে কোনও পাঠ্য নেই?

if (!$('#element').text().length) {
    ...
}

এটি এমন উপাদানগুলিকে সম্বোধন করে না যার বিষয়বস্তু চিত্রগুলি (কীভাবে আমি এটি নিয়ে এসেছি ... জিজ্ঞাসা করবেন না)
খারাপ অনুরোধ

@ ব্যাডরেউকেষ্ট নং, সুতরাং "চিহ্ন হিসাবে কোনও পাঠ্য নেই ?" এর পরে প্রশ্ন চিহ্ন রয়েছে ? :)
জেনসগ্রাম

7

জীবনবৃত্তান্তে, উপাদান খালি আছে কিনা তা খুঁজে বের করার জন্য অনেকগুলি বিকল্প রয়েছে:

1- ব্যবহার html:

if (!$.trim($('p#element').html())) {
    // paragraph with id="element" is empty, your code goes here
}

2- ব্যবহার text:

if (!$.trim($('p#element').text())) {
    // paragraph with id="element" is empty, your code goes here
}

3- ব্যবহার is(':empty'):

if ($('p#element').is(':empty')) {
    // paragraph with id="element" is empty, your code goes here
}

4- ব্যবহার length

if (!$('p#element').length){
    // paragraph with id="element" is empty, your code goes here
}

আসক্তিতে আপনি যদি কোনও ইনপুট উপাদান খালি রয়েছে তা সন্ধানের চেষ্টা করছেন তবে আপনি এটি ব্যবহার করতে পারেন val:

if (!$.trim($('input#element').val())) {
    // input with id="element" is empty, your code goes here
}

2

ব্রাউজারের জন্য html()বা এর চেয়ে কম "কাজ" করা দরকার এমন অন্য একটি বিকল্প children():

function isEmpty( el ){
  return !el.has('*').length;
}

1
document.getElementById("id").innerHTML == "" || null

অথবা

$("element").html() == "" || null

0

আপনি চেষ্টা করতে পারেন:

if($('selector').html().toString().replace(/ /g,'') == "") {
//code here
}

* সাদা জায়গাগুলি প্রতিস্থাপন করুন, কেবল incase;)


আরও !/[\S]/.test($('Selector').html())ভাল কাজ করবে না , একবার যদি আপনি কিছু
শ্বেতস্থান

রেগেক্স পতাকাগুলিতে / আমি কেন? স্পেস ক্যারেকটারের আপার এবং লোয়ার কেস ভার্সন রয়েছে?
অ্যালেক্সিস উইলক

ধন্যবাদ, আমার উত্তর আপডেট। কেন আমি যুক্ত করেছি / আমি জানি না / আমি
মার্ক উবারস্টেইন

1
@RobertMallow, হয়তো Regex সমর্থন \ এস, তবে ইউনিকোড কার্বন কপি, যদ, zł, ZP যেমন অনুসরণকারী শূণ্যস্থান যেমন এখানে দেখানো করবেঃ unicode.org/Public/UNIDATA/PropList.txt - বড় হাতের অক্ষরে লু হচ্ছে ...
অ্যালেক্সিস Wilke

1
@ রবার্টমিলিও, বাস্তুThe production CharacterClassEscape :: S evaluates by returning the set of all characters not included in the set returned by CharacterClassEscape :: s.
অ্যালেক্সিস




-1

জাভাস্ক্রিপ্ট

var el= document.querySelector('body'); 
console.log(el);
console.log('Empty : '+ isEmptyTag(el));
console.log('Having Children : '+ hasChildren(el));


function isEmptyTag(tag) { 
    return (tag.innerHTML.trim() === '') ? true : false ;
}
function hasChildren(tag) {
    //return (tag.childElementCount !== 0) ? true : false ; // Not For IE
    //return (tag.childNodes.length !== 0) ? true : false ; // Including Comments
    return (tag.children.length !== 0) ? true : false ; // Only Elements
}

এর যে কোন একটি ব্যবহার করে দেখুন!

document.getElementsByTagName('div')[0];
document.getElementsByClassName('topbar')[0];

document.querySelectorAll('div')[0];
document.querySelector('div'); // gets the first element.


-2

লাইন বিরতি এফএফ এর উপাদানগুলির বিষয়বস্তু হিসাবে বিবেচিত হয়।

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

উদা:

$("div:empty").text("Empty").css('background', '#ff0000');

আইই উভয় ডিভগুলি ফাঁকা হিসাবে বিবেচনা করা হয়, এফএফ এ একটি ক্রোম কেবল সর্বশেষটি খালি থাকে।

আপনি @ কিওয়ারটিমকের সরবরাহিত সমাধানটি ব্যবহার করতে পারেন

if(!/[\S]/.test($('#element').html())) { // for one element
    alert('empty');
}

অথবা

$('.elements').each(function(){  // for many elements
    if(!/[\S]/.test($(this).html())) { 
        // is empty
    }
})
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.