ডিভিডির আইডি থাকলে শিশুদের jquery হয়


202

এই ifশর্তটি আমাকে সমস্যা দিচ্ছে:

if (div id=myfav has children) {
   do something
} else {
   do something else 
}

আমি নিম্নলিখিত সমস্ত চেষ্টা করেছিলাম:

if ( $('#myfav:hasChildren') ) { do something }
if ( $('#myfav').children() ) { do something }
if ( $('#myfav:empty') ) { do something }
if ( $('#myfav:not(:has(*))') ) { do something }

উত্তর:


440
if ( $('#myfav').children().length > 0 ) {
     // do something
}

এই কাজ করা উচিত. children()ফাংশন একটি jQuery বস্তুর শিশু সমন্বিত ফেরৎ। সুতরাং আপনাকে কেবল আকারটি পরীক্ষা করে দেখতে হবে এটির কমপক্ষে একটি সন্তান রয়েছে কিনা see


1
উত্তর করার জন্য ধন্যবাদ. এটিই আমার পক্ষে কাজ করেছিল। আমি জানতাম আমি .children () এর সাথে সঠিক পথে আছি, তবে এটিতে কী ভুল ছিল তা আমি জানতাম না। দৃশ্যত আকার 0 হতে পারে, বোধ হয় sense
ক্রিস

2
আপনি যদি বাচ্চাদের সাথে কোনও নির্বাচক যুক্ত করেন তবে আপনি কোনও উপাদানটির কোনও নির্দিষ্ট নির্বাকের সাথে মেলে এমন কোনও শিশু রয়েছে কিনা তাও পরীক্ষা করে দেখতে পারেন, যেমন আপনি যদি দেখতে চান যে কোনও উপাদানটির একটি নির্দিষ্ট শ্রেণীর বাচ্চা আছে কিনা।
মুহাদে

11
ছোটখাটো ইস্যু নীটপিকের অর্থ নয়, তবে children().lengthএখানে jQuery ডক্সের আকার () এর পরিবর্তে কল করা উচিত: api.jquery.com/size
ব্রায়ান শ্যাভেজ

4
এবং যদি নোডে কেবল পাঠ্য থাকে !?
botenvouwer

1
@ সিরউইলিয়াম নোড 0 দৈর্ঘ্যের সাথে ফিরে আসবে।
মেকি

54

এই স্নিপেটটি নির্ধারণ করবে যে উপাদানটিতে :parentনির্বাচক ব্যবহার করে শিশু রয়েছে :

if ($('#myfav').is(':parent')) {
    // do something
}

নোট যে :parentএক বা একাধিক পাঠ্য নোড সহ একটি উপাদানকে পিতামাতাকে বিবেচনা করে।

সুতরাং এবং প্রতিটি divউপাদানকে পিতামাতা হিসাবে বিবেচনা করা হবে তবে তারা পিতামাতার নয় ।<div>some text</div><div><span>some text</span></div><div></div>


2
হ্যাঁ, আমি মনে করি এই উত্তরটি এস প্যাংগারনের চেয়ে আরও মার্জিত। উভয় যদিও সম্পূর্ণ বৈধ।
কাইলফারিস 18

1
@ মিলো ল্যামার, আমি সন্দেহ করব যে পারফরম্যান্সের পার্থক্য খুব বেশি নেই, তবে নিশ্চিত হওয়ার একমাত্র উপায় এটি চেষ্টা করা! এছাড়াও, আপনাকে #myfavএবং :parentআপনার উদাহরণের মধ্যে স্থানটি সরিয়ে ফেলতে হবে , অন্যথায় নির্বাচক আমার উত্তর সরবরাহ করবে।
dcharles

3
খুব অল্প পরিমাণে পড়া আমার পক্ষে যথেষ্ট উত্তর দিয়েছে। Api.jquery.com Additional Notes: Because :parent is a jQuery extension and not part of the CSS specification, queries using :parent cannot take advantage of the performance boost provided by the native DOM querySelectorAll() method. To achieve the best performance when using :parent to select elements, first select the elements using a pure CSS selector, then use .filter(":parent").
মিলো লামার

6
0.002s এ পারফরম্যান্স পরীক্ষার ফলাফল - আমি এই উপায়ে পছন্দ করি, কারণ এটি সবচেয়ে ভাল পঠনযোগ্য ...
10

1
আমি বিভ্রান্ত, এটি সেরা উত্তর না?
আন্দ্রে ক্রিশ্চিয়ান প্রোডান

47

আর একটি বিকল্প, কেবল এটির হেকের জন্য হ'ল:

if ( $('#myFav > *').length > 0 ) {
     // do something
}

বাস্তবে এটি দ্রুততম হতে পারে যেহেতু এটি সিজল ইঞ্জিনটি কঠোরভাবে ব্যবহার করে এবং অগত্যা কোনও jQuery নয়। যদিও ভুল হতে পারে। তবুও, এটি কাজ করে।


16

এর জন্য আসলে একটি সহজ দেশীয় পদ্ধতি রয়েছে:

if( $('#myfav')[0].hasChildNodes() ) { ... }

নোট করুন যে এটিতে সাধারণ পাঠ্য নোডগুলিও অন্তর্ভুক্ত রয়েছে, তাই এটি কোনও ক্ষেত্রে সত্য হবে <div>text</div>


$(...)[0] is undefinedযদি #myfavএটি না পাওয়া যায় তবে এটি ঘটতে পারে । আমি যে অবস্থা, অর্থাত প্রয়োগ করার পূর্বে প্রথম মিলে যাওয়া উপাদান অস্তিত্ব পরীক্ষা চাই: $('#myfav')[0] && $('#myfav')[0].hasChildNodes()
সিপিএইচপিথন

13

এবং আপনি যদি ডিভটি পরীক্ষা করতে চান তবে একটি পার্টিকুলার বাচ্চা রয়েছে (বলুন <p>ব্যবহার করুন:

if ($('#myfav').children('p').length > 0) {
     // do something
}

7

ডিভের নির্দিষ্ট বাচ্চা আছে কি না তাও আপনি পরীক্ষা করতে পারেন,

if($('#myDiv').has('select').length>0)
{
   // Do something here.
   console.log("you can log here");

}

4

JQuery উপায়

JQuery এ, $('#id').children().length > 0কোনও উপাদানটির শিশু রয়েছে কিনা তা পরীক্ষা করতে আপনি ব্যবহার করতে পারেন ।

ডেমো

var test1 = $('#test');
var test2 = $('#test2');

if(test1.children().length > 0) {
    test1.addClass('success');
} else {
    test1.addClass('failure');
}

if(test2.children().length > 0) {
    test2.addClass('success');
} else {
    test2.addClass('failure');
}
.success {
    background: #9f9;
}

.failure {
    background: #f99;
}
<script src="https://code.jquery.com/jquery-1.12.2.min.js"></script>
<div id="test">
   <span>Children</span>
</div>
<div id="test2">
   No children
</div>


ভ্যানিলা জেএস উপায়

আপনি jQuery ব্যবহার করতে না চান, আপনি ব্যবহার করতে পারেন document.getElementById('id').children.length > 0 কোনও উপাদানটির শিশু রয়েছে কিনা তা পরীক্ষা ।

ডেমো

var test1 = document.getElementById('test');
var test2 = document.getElementById('test2');

if(test1.children.length > 0) {
    test1.classList.add('success');
} else {
    test1.classList.add('failure');
}

if(test2.children.length > 0) {
    test2.classList.add('success');
} else {
    test2.classList.add('failure');
}
.success {
    background: #9f9;
}

.failure {
    background: #f99;
}
<div id="test">
   <span>Children</span>
</div>
<div id="test2">
   No children
</div>

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