নির্দিষ্ট আইডির সাথে ডিভিউ 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');
জে ইরভাইন

() ডিওএম গাছ থেকে উপাদানটি আলাদা করে তবে এটি ধ্বংস করে না, সুতরাং আইডি দ্বারা অনুসন্ধান করা এটি এখনও খুঁজে পাবে, আপনি যদি এটি কোনও ভেরিয়েবলের কাছে অর্পণ করেন তবে এটি এখনও সেখানে থাকবে etc. ইত্যাদি সমাধান যদি আপনি এখানে করেন তবে এটি সন্ধান করুন, এটি সঠিক ডিভের সাথে যুক্ত করুন (যদি এটি ইতিমধ্যে কিছু না ঘটে তবে এটি যদি আলাদা হয় / সরিয়ে ফেলা হয় তবে তা আবার উপস্থিত হবে), যদি এটি না পাওয়া যায় তবে এটি তৈরি করুন।
জে ইরভাইন

উত্তর:


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');
  }
});

বা, এই অংশটির জন্য নন-জিকুয়ের সংস্করণ (যেহেতু এটি একটি আইডি):

$("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

@ নিক - এটি আমার পক্ষে কাজ করছে না। সমস্যা সমাধানের সময় আমি [নাম] এর ডিভি আইডিটির দৈর্ঘ্যটি সতর্ক করেছিলাম তবে এটি এটি কখনও খুঁজে পায় না।
সাদমিক্রোভে

8
যদি ($ ("#" + নাম)। দৈর্ঘ্য) {just ঠিকঠাক কাজ করে তবে == পরীক্ষা করা প্রয়োজন।
স্কটই

3
@ স্কটই - যদিও এর অর্থ বিপরীত, !$("#"+name).length):)
নিক ক্র্যাভার

1
আমি মনে করি আপনার ===করাত পরিবর্তে করা উচিত ==
বিপদ 89

66

নিকের উত্তর এটি নখ করে। আপনি getElementById এর রিটার্ন মানটি সরাসরি আপনার শর্ত হিসাবে ব্যবহার করতে পারেন, একে একে নালার সাথে তুলনা করার পরিবর্তে (যে কোনওভাবেই কাজ করে তবে আমি ব্যক্তিগতভাবে এই স্টাইলটিকে আরও কিছুটা পঠনযোগ্য মনে করি):

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

আপনি ঠিক বলেছেন, এটি দুর্দান্ত কাজ করে (আমি অবশ্যই বোকামি কিছু করছিলাম)। তবে আমি যখন সতর্কতাটি ()) অন্য কোনও কিছুর সাথে প্রতিস্থাপন করি তখন আমি এই বলে ত্রুটি পাই: "শ্রেণীর নাম অনুসন্ধানের সময় ফাইলের অপ্রত্যাশিত সমাপ্তি"। এটি কেন ঘটছে? আমি আমার সতর্কতা () ফাংশনটি কী ... এর সাথে প্রতিস্থাপন করছি তার জন্য আমার ওপি দেখুন ...
সাদমিক্রোভে

কারও কাছ থেকে কোন অতিরিক্ত ধারণা?
সাদমিক্রোয়েভ

2
ত্রুটিটি মনে হচ্ছে আপনি ব্র্যাককেট বা একটি আধা-কোলন অনুপস্থিত।
রিককি

@ ফিলিও যদি আপনার সন্ধানের জন্য নির্দিষ্ট আইডির সাথে অ্যারেতে মিলিত হয় তবে কী হবে
বেয়ানী

আপনার একটি অ্যারেতে বেশ কয়েকটি আইডি রয়েছে এবং আপনি সেগুলির প্রতিটি সন্ধান করতে চান? ব্রুট ফোর্স পদ্ধতির জন্য অ্যারের উপরে লুপ করা এবং তাদের প্রত্যেকের জন্য getElementById কল করা হবে।
ফিলো

31

নির্বাচকটির দৈর্ঘ্য যাচাই করার চেষ্টা করুন, যদি এটি আপনাকে কিছু দেয় তবে উপাদানটি অবশ্যই উপস্থিত থাকে অন্যথায় নয় else

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
}

আইডির জন্য প্রথম শর্তটি এবং দ্বিতীয় শ্রেণীর জন্য ব্যবহার করুন।



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

}

আর একটি শর্টহ্যান্ড উপায়:

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

আইডি ("# মাইডিভ") উপস্থিত থাকলে এটি সম্পাদন করতে পারে এমন আইপি ফাংশনের ভিতরে এটির কেবল উদাহরণ a
সানজিব দেবনাথ

5

আপনি এই জাতীয় jquery ব্যবহার করে চেক করতে পারেন:

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

1
যদি ('(' # ডিভাইড ')। দৈর্ঘ্য! = 0) {আপনার কোড এখানে correct এটি সঠিক হবে
সন্তোষ

4

সবচেয়ে সহজ উপায় হল ..

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

এটি এইচটিএমএল 5 স্পেসেরও একটি অংশ: https://www.w3.org/TR/html5/single-page.html#accessing-other-browsing-contexts# নাম-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

আপনি এটি বিভিন্ন উপায়ে পরিচালনা করতে পারেন,

উদ্দেশ্যটি হ'ল ডিভ উপস্থিত আছে কিনা তা পরীক্ষা করা কোডটি কার্যকর করে exec সহজ।

কন্ডিশন:

$('#myDiv').length

বিঃদ্রঃ:

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

এটি যতবার নির্বাহ করা হবে ততবার এটি একটি সংখ্যা ফিরিয়ে দেবে তাই কোনও ডিভ না থাকলে এটি একটি শূন্য দেয় [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 এ যাচাই করতে চান আইডি হ'ল পদ্ধতি is

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
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.