जवाबों:
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 प्लगइन में भी बना सकते हैं, लेकिन आपको इसका विचार है।
मुझे यह एकमात्र विश्वसनीय तरीका लगा (क्योंकि Chrome & FF व्हाट्सएप और लाइनब्रेक को तत्वों के रूप में मानते हैं):
if($.trim($("selector").html())=='')
if(!$.trim($("selector").html())
if($("selector").children().length === 0)
या if($("selector > *").length === 0)
।
रिक्त स्थान का उपयोग करने के साथ सफेद स्थान और लाइन ब्रेक मुख्य मुद्दे हैं। सीएसएस में सावधान: खाली छद्म वर्ग उसी तरह का व्यवहार करता है। मुझे यह तरीका पसंद है:
if ($someElement.children().length == 0){
someAction();
}
$.children()
पाठ या टिप्पणी नोड्स वापस नहीं करता है, जिसका अर्थ है कि यह समाधान केवल जांचता है कि तत्व तत्वों से खाली है । यदि एक तत्व जिसमें केवल पाठ या टिप्पणियां शामिल हैं, उसे आपकी आवश्यकताओं के लिए खाली नहीं माना जाना चाहिए, तो आपको अन्य समाधानों में से एक का उपयोग करना चाहिए।
select
तत्वों के लिए @sierrasdetandil एकदम सही है। हालत भी हो सकता है if(! $el.children().length)
।
!elt.hasChildNodes()
हाँ, मुझे पता है, यह jQuery नहीं है, इसलिए आप इसका उपयोग कर सकते हैं:
!$(elt)[0].hasChildNodes()
अब खुश?
filter
जब तक मैं आवश्यक न हो तब तक मैंने jQuery फ़ंक्शन के अंदर अपने दृष्टिकोण का उपयोग किया क्योंकि मैं फ़ंक्शन के अंदर jQuery का उपयोग नहीं करना चाहता था।
<div class="results"> </div>
, तो यह कथन गलत होगा। jsfiddle.net/ytliuSVN/0pdwLt46
jQuery.fn.doSomething = function() {
//return something with 'this'
};
$('selector:empty').doSomething();
this
JQuery तत्व @ZealMurapa के अलावा और क्या होगा ?
यदि "खाली" द्वारा, आप बिना HTML सामग्री के,
if($('#element').html() == "") {
//call function
}
में कोई पाठ शामिल नहीं है?
if (!$('#element').text().length) {
...
}
फिर से शुरू करने में, यह पता लगाने के लिए कई विकल्प हैं कि क्या कोई तत्व खाली है:
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
}
document.getElementById("id").innerHTML == "" || null
या
$("element").html() == "" || null
तुम कोशिश कर सकते हो:
if($('selector').html().toString().replace(/ /g,'') == "") {
//code here
}
* सफेद रिक्त स्थान बदलें, बस उकसाना;)
!/[\S]/.test($('Selector').html())
, बेहतर काम करने से व्हाइटस्पेस क्या आप जानते हैं इसे खाली नहीं कर रहा है एक बार आप कुछ मिल जाए
The production CharacterClassEscape :: S evaluates by returning the set of all characters not included in the set returned by CharacterClassEscape :: s.
से ecma-international.org/ecma-262/5.1/#sec-15.10.2.12
क्या आप ढूंढ रहे हैं jQuery.isEmptyObject()
?
यहाँ https://stackoverflow.com/a/6813294/698289 पर आधारित एक jQuery फ़िल्टर है
$.extend($.expr[':'], {
trimmedEmpty: function(el) {
return !$.trim($(el).html());
}
});
जावास्क्रिप्ट
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.
एफएफ में तत्वों को लाइन ब्रेक माना जाता है।
<div>
</div>
<div></div>
उदाहरण के लिए:
$("div:empty").text("Empty").css('background', '#ff0000');
IE में दोनों div को खाली माना जाता है, FF में क्रोम केवल एक अंतिम खाली होता है।
आप @qwertymk द्वारा दिए गए समाधान का उपयोग कर सकते हैं
if(!/[\S]/.test($('#element').html())) { // for one element
alert('empty');
}
या
$('.elements').each(function(){ // for many elements
if(!/[\S]/.test($(this).html())) {
// is empty
}
})
$('#elem').text().match(/\S/) || alert('empty');