कैसे पता करें कि विशिष्ट आईडी के साथ div jQuery में मौजूद है?


266

मुझे एक फ़ंक्शन मिला है जो <div>क्लिक पर एक तत्व को जोड़ता है । फ़ंक्शन को क्लिक किए गए तत्व का पाठ मिलता है और इसे एक चर नाम दिया जाता है name। उस चर को तब <div> idजोड़ा गया तत्व के रूप में प्रयोग किया जाता है ।

मैं देखने की जरूरत एक अगर <div> idसाथ nameपहले से मौजूद है इससे पहले कि मैं तत्व संलग्न लेकिन मैं यह कैसे पता लगाने के लिए पता नहीं है।

यहाँ मेरा कोड है:

$("li.friend").live('click', function() {
  name = $(this).text();

  // if-statement checking for existence of <div> should go here
  // If <div> does not exist, then append element
    $("div#chatbar").append("<div class='labels'><div id='" + name + "' style='display:none;'></div>" + name + "</div>");

  // Else
    alert('this record already exists');
});

यह बहुत सीधा लगता है, लेकिन मुझे " कक्षा के नाम की खोज करते समय फ़ाइल का अप्रत्याशित अंत " त्रुटि मिल रही है । मेरा कोई मतलब नहीं है कि इसका क्या मतलब है।

if (document.getElementById(name)) {
  $("div#" + name).css({bottom: '30px'});
} else {
  $("div#page-content div#chatbar").append("<div class='labels'>" + name + "</div><div id='" + name + "'></div>");
}

क्या अधिक है कि मैं इस तत्व को हटाने में सक्षम होना चाहता हूं यदि मैं इसे बंद कर देता हूं जो तब div id [name]दस्तावेज़ से हटा देना चाहिए , लेकिन .remove()ऐसा नहीं करता है।

यहाँ उस के लिए कोड है:

$(".mini-close").live('click', function(){
  $(this).parent().remove();
});

मैंने .mini-closeएक बच्चे के रूप में एपेंड फंक्शन में जोड़ा .labelsताकि <div>जरूरत पड़ने पर ऐप्पल से बाहर निकलने का एक तरीका हो । .mini-closeएक ही नाम को फिर से क्लिक करने का प्रयास करने और क्लिक करने के बाद li.friendsभी यह div id [name]मेरे ifकथन का पहला भाग खोजता है और वापस करता है ।


फ़ाइल का अप्रत्याशित अंत आमतौर पर एक सिंटैक्स त्रुटि के लिए कहीं और फोड़ा जाता है। $("div#" + name).css({bottom: '30px'});गलत है, यह होना चाहिए$("div#" + name).css('bottom', '30px');
जे इर्विन

निकालें () DOM ट्री से तत्व को अलग करता है, लेकिन इसे नष्ट नहीं करता है, इसलिए ID द्वारा एक खोज अभी भी इसे खोज लेगा, यदि आप इसे एक चर को असाइन करते हैं तो यह अभी भी वहीं रहेगा, आदि समाधान यहाँ है यदि आप इसे ढूंढें, इसे सही डिव में जोड़ें (यदि यह पहले से ही कुछ भी नहीं है, अगर इसे अलग कर दिया गया / हटा दिया गया तो यह फिर से दिखाई देगा), यदि यह नहीं मिला है, तो इसे बनाएं।
जे इर्विन

जवाबों:


539

आप .lengthचयनकर्ता के बाद यह देखने के लिए उपयोग कर सकते हैं कि क्या यह किसी तत्व से मेल खाता है, जैसे:

if($("#" + name).length == 0) {
  //it doesn't exist
}

पूर्ण संस्करण:

$("li.friend").live('click', function(){
  name = $(this).text();
  if($("#" + name).length == 0) {
    $("div#chatbar").append("<div class='labels'><div id='" + name + "' style='display:none;'></div>" + name + "</div>");
  } else {
    alert('this record already exists');
  }
});

या, इस भाग के लिए गैर- jQuery संस्करण (क्योंकि यह एक आईडी है):

$("li.friend").live('click', function(){
  name = $(this).text();
  if(document.getElementById(name) == null) {
    $("div#chatbar").append("<div class='labels'><div id='" + name + "' style='display:none;'></div>" + name + "</div>");
  } else {
    alert('this record already exists');
  }
});

98
गैर- jQuery भाग में jQuery के बहुत सारे: p
jAndy

@ निक - यह मेरे लिए काम नहीं कर रहा है। समस्या निवारण के दौरान मैंने [नाम] की div आईडी की लंबाई को सचेत किया, लेकिन यह कभी नहीं मिली।
दुखद माइक्रोवेव

8
जाँच करना == 0 आवश्यक नहीं है अगर ($ ("#" + नाम) .length) {} ठीक काम करता है।
स्कॉट जूल

3
@ScottE - वह उलटा हालांकि, क्या आपका मतलब है !$("#"+name).length):)
निक Craver

1
मुझे लगता है कि आपको ===देखा के बजाय करना चाहिए ==
खतरा

66

निक का जवाब नाखून। आप अपनी स्थिति के रूप में सीधे getElementById के रिटर्न मान का उपयोग कर सकते हैं, बजाय इसे अशक्त करने के (या तो काम करता है, लेकिन मैं व्यक्तिगत रूप से इस शैली को थोड़ा अधिक पढ़ने योग्य पाता हूं):

if (document.getElementById(name)) {
  alert('this record already exists');
} else {
  // do stuff
}

आप सही हैं, यह बहुत अच्छा काम करता है (मैं कुछ बेवकूफी कर रहा होगा)। हालाँकि जब मैं अलर्ट () को किसी और चीज़ से बदलता हूँ तो मुझे यह कहते हुए एक त्रुटि मिलती है: "क्लास का नाम खोजते समय फ़ाइल का अप्रत्याशित अंत"। ये क्यों हो रहा है? मेरे
एलपी को

किसी से कोई अतिरिक्त विचार?
दुखद माइक्रोवेव 13

2
त्रुटि ऐसी लगती है जैसे आप किसी कोष्ठक या अर्ध-कॉलन को याद कर रहे हैं।
रिक्की

@Philo क्या होगा यदि आपकी विशिष्ट आईडी मैच के लिए किसी सरणी में
देखी

आपके पास एक सरणी में कई आईडी हैं, और आप उनमें से प्रत्येक को ढूंढना चाहते हैं? जानवर बल दृष्टिकोण सरणी पर लूप करने के लिए होगा और उनमें से प्रत्येक के लिए getElementById कॉल करें।
philo

31

चयनकर्ता की लंबाई की जांच करने की कोशिश करें, अगर यह आपको कुछ देता है तो तत्व मौजूद होना चाहिए और नहीं।

if( $('#selector').length )         // use this if you are using id to check
{
     // it exists
}


if( $('.selector').length )         // use this if you are using class to check
{
     // it exists
}

अगर आईडी के लिए पहली और कक्षा के लिए 2 की स्थिति का उपयोग करें।



10
if ( $( "#myDiv" ).length ) {
    //id id ( "#myDiv" ) is exist this will perform
    $( "#myDiv" ).show();

}

एक और शॉर्टहैंड तरीका:

    $( "#myDiv" ).length && $( "#myDiv" ).show();

यदि फ़ंक्शन कुछ भी लिख सकता है, तो इसका सिर्फ एक उदाहरण, जब आईडी ("# डीडिव") मौजूद है जो प्रदर्शन करेगा।
संजीब देबनाथ 10

5

आप इस तरह से jquery का उपयोग करके देख सकते हैं:

if($('#divId').length!==0){
      Your Code Here
}

1
if ($ ('# divId')। लंबाई! = 0) {आपका कोड यहाँ} यह सही होगा
संतोष

4

सबसे सरल तरीका है ..

if(window["myId"]){
    // ..
}

यह HTML5 स्पेक्स का भी हिस्सा है: https://www.w3.org/TR/html5/single-page.html#accessing-other-browsing-contexts# name-access-on-the-window- object

window[name]
    Returns the indicated element or collection of elements.

यह अच्छा लग रहा है लेकिन अब एक नोट w3.org/TR/html5/… है कि "इस पर भरोसा करने से भंगुर कोड हो जाएगा"।
कीवी शापिरो

3

यहाँ jQuery फ़ंक्शन मैं उपयोग कर रहा हूँ:

function isExists(var elemId){
    return jQuery('#'+elemId).length > 0;
}

यह बूलियन मान लौटाएगा। यदि तत्व मौजूद है, तो यह सही है। यदि आप वर्ग नाम से तत्व का चयन करना चाहते हैं, तो बस के #साथ बदलें.


2

आप इसे विभिन्न तरीकों से संभाल सकते हैं,

उद्देश्य यह जांचना है कि यदि div मौजूद है तो कोड निष्पादित करें। सरल।

स्थिति:

$('#myDiv').length

ध्यान दें:

#myDiv -> < div id='myDiv' > <br>
.myDiv -> < div class='myDiv' > 

यह हर बार इसे निष्पादित होने पर एक नंबर लौटाएगा, अगर कोई div नहीं है तो यह एक शून्य [0] देगा, और जैसा कि हम नहीं 0 को बाइनरी में गलत के रूप में दर्शाया जा सकता है ताकि आप इसे स्टेटमेंट में उपयोग कर सकें। और आप इसे एक संख्या के साथ तुलना के रूप में उपयोग कर सकते हैं। जबकि नीचे दिए गए तीन कथन हैं

// Statement 0
// jQuery/Ajax has replace [ document.getElementById with $ sign ] and etc
// if you don't want to use jQuery/ajax 

   if (document.getElementById(name)) { 
      $("div#page-content div#chatbar").append("<div class='labels'>" + name + "</div><div id='" + name + "'></div>");
    }

// Statement 1
   if ($('#'+ name).length){ // if 0 then false ; if not 0 then true
       $("div#page-content div#chatbar").append("<div class='labels'>" + name + "</div><div id='" + name + "'></div>");
    }

// Statement 2
    if(!$('#'+ name).length){ // ! Means Not. So if it 0 not then [0 not is 1]
           $("div#page-content div#chatbar").append("<div class='labels'>" + name + "</div><div id='" + name + "'></div>"); 
    }
// Statement 3
    if ($('#'+ name).length > 0 ) {
      $("div#page-content div#chatbar").append("<div class='labels'>" + name + "</div><div id='" + name + "'></div>");
    }

// Statement 4
    if ($('#'+ name).length !== 0 ) { // length not equal to 0 which mean exist.
       $("div#page-content div#chatbar").append("<div class='labels'>" + name + "</div><div id='" + name + "'></div>");
    }

1

जिस आईडी को आप jquery में जांचना चाहते हैं, वह विधि है।

var idcheck = $("selector").is("#id"); 

if(idcheck){ // if the selector contains particular id

// your code if particular Id is there

}
else{
// your code if particular Id is NOT there
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.