একই শ্রেণীর উপাদানগুলির সাথে লুপ করতে jQuery


581

আমার ক্লাসের সাথে testimonialপ্রচুর পরিমাণে ডিভ রয়েছে এবং আমি যদি একটি নির্দিষ্ট শর্তটি সত্য হয় তবে প্রতিটি ডিভ পরীক্ষা করতে তাদের মাধ্যমে লুপ করতে jquery ব্যবহার করতে চাই। যদি এটি সত্য হয় তবে এটির একটি ক্রিয়া করা উচিত।

কেউ কি জানেন আমি কীভাবে এটি করব?

উত্তর:


1051

প্রতিটি ব্যবহার করুন: ' i' হ'ল অ্যারেতে অবস্থান, আপনি যে পুনরায় পুনরুক্তি করছেন তা ডিওএম objঅবজেক্ট (jQuery মোড়কের মাধ্যমেও প্রবেশ করা যেতে পারে $(this))।

$('.testimonial').each(function(i, obj) {
    //test
});

পরীক্ষা করে দেখুন API উল্লেখ আরও তথ্যের জন্য।


2
আই, ওজেক্ট প্যারামিটার সহ ফাংশনটি অনেক সহায়তা করে। যদি কেবল প্রতিটি ব্যবহার করা হয় তবে এটি পুনরাবৃত্তি হয় না।
দারওয়িন্দেডস

2
পছন্দ করুন প্রতিটি আইটেমটি প্রক্রিয়া করতে ফাংশনটি প্রকৃত পুনরুক্তিকারী দ্বারা ব্যবহৃত হয়। প্রত্যাবর্তন falseপুনরাবৃত্তি থামবে।
কিস সি বাকার

138
এটি উল্লেখ করার মতো, "objজেক্ট" ডোম অবজেক্ট হবে, যখন $ (এটি) jQuery অবজেক্ট।
AndreasT

আমরা jQuery করতে পারি না (এই 'উল লি')। উপাদানগুলির দৈর্ঘ্য পেতে দৈর্ঘ্য উল লি?
techie_28

16
$(this)অবজেক্টটি অ্যাক্সেস করার পরামর্শ দেওয়ার জন্য +1 ... objobj.empty()
ডিওএম অবজেক্ট হওয়ায়

127

এটা চেষ্টা কর...

$('.testimonial').each(function(){
    //if statement here 
    // use $(this) to reference the current div in the loop
    //you can try something like...


    if(condition){

    }


 });

4
এফওয়াইআই: break;ভাঙ্গবে না। আপনার অবশ্যই ব্যবহার করতে হবেreturn false;
কলব ক্যানিয়ন

53

আজকাল jQuery ছাড়াই এটি করা বেশ সহজ।

JQuery ছাড়া:

কেবল উপাদানগুলি নির্বাচন করুন এবং সেগুলি পুনরাবৃত্তি করতে .forEach()পদ্ধতিটি ব্যবহার করুন:

const elements = document.querySelectorAll('.testimonial');
Array.from(elements).forEach((element, index) => {
  // conditional logic here.. access element
});

পুরানো ব্রাউজারগুলিতে:

var testimonials = document.querySelectorAll('.testimonial');
Array.prototype.forEach.call(testimonials, function(element, index) {
  // conditional logic here.. access element
});

42

এই উদাহরণ চেষ্টা করুন

এইচটিএমএল

<div class="testimonial" data-index="1">
    Testimonial 1
</div>
<div class="testimonial" data-index="2">
    Testimonial 2
</div>
<div class="testimonial" data-index="3">
    Testimonial 3
</div>
<div class="testimonial" data-index="4">
    Testimonial 4
</div>
<div class="testimonial" data-index="5">
    Testimonial 5
</div>

আমরা যখন অ্যাক্সেস করতে চান সেই divsযা data-indexতার চেয়ে অনেক বেশী 2তারপর আমরা এই jQuery প্রয়োজন।

$('div[class="testimonial"]').each(function(index,item){
    if(parseInt($(item).data('index'))>2){
        $(item).html('Testimonial '+(index+1)+' by each loop');
    }
});

কাজ উদাহরণ উদাহরণ



18

jQuery এর .eq () আপনাকে সূচকযুক্ত পদ্ধতির সাহায্যে উপাদানগুলির মধ্য দিয়ে যেতে সহায়তা করতে পারে।

var testimonialElements = $(".testimonial");
for(var i=0; i<testimonialElements.length; i++){
    var element = testimonialElements.eq(i);
    //do something with element
}

1
এটি প্রকৃতপক্ষে সবচেয়ে দক্ষ পদ্ধতি।
আমিন সেতায়েশফার

17
divs  = $('.testimonial')
for(ind in divs){
  div = divs[ind];
  //do whatever you want
}

এটি আপনাকে jquery অবজেক্ট দেয় না যদিও, কেবল ডোম উপাদানগুলি
সেলওয়েল

1
@celwell jQuery আপনার জন্য সবকিছু করবে এমন আশা করতে পারে না। এটি আপনার নিজের jQuery অবজেক্ট তৈরির বিষয় $(ind)
গোল্ডবিশপ

14

আপনি সংক্ষিপ্তভাবে ব্যবহার করে এটি করতে পারেন .filter। নিম্নলিখিত উদাহরণটি "কিছু" শব্দযুক্ত সমস্ত .testimonial ডিভগুলি আড়াল করবে:

$(".testimonial").filter(function() {
    return $(this).text().toLowerCase().indexOf("something") !== -1;
}).hide();

10

লুপের জন্য একটি সাধারণ সহ:

var testimonials= $('.testimonial');
for (var i = 0; i < testimonials.length; i++) {
  // Using $() to re-wrap the element.
  $(testimonials[i]).text('a');
}

8

JQuery আপডেট ছাড়া

document.querySelectorAll('.testimonial').forEach(function (element, index) {
    element.innerHTML = 'Testimonial ' + (index + 1);
});
<div class="testimonial"></div>
<div class="testimonial"></div>


প্রায় একই উত্তরটি ইতিমধ্যে এখানে রয়েছে, আমার মনে হয় আপনার বিদ্যমান সম্পাদনা করা উচিত
ওলেহ রাইবালচেঙ্কো

8

আমি প্রশ্নের কিছু অংশ মিস করতে পারি তবে আমি বিশ্বাস করি আপনি কেবল এটি করতে পারেন:

$('.testimonial').each((index, element) => {
    if (/* Condition */) {
        // Do Something
    }
});

এটি jQuery এর প্রতিটি পদ্ধতি ব্যবহার করে: https://learn.jquery.com/used-jquery-core/iterating/



4

আরও সুনির্দিষ্ট:

$.each($('.testimonal'), function(index, value) { 
    console.log(index + ':' + value); 
});

আপনি যদি আরও কার্যকরী দৃষ্টিকোণ থেকে পড়া / লেখা পছন্দ করেন তবে এটি দুর্দান্ত।
Sgnl

4

জাভাস্ক্রিপ্ট ES6 এ। দ্বারা প্রদত্ত অ্যারের মতো নোডলিস্ট সংগ্রহের উপরে প্রতিটি () Element.querySelectorAll()

document.querySelectorAll('.testimonial').forEach( el => {
  el.style.color = 'red';
  console.log( `Element ${el.tagName} with ID #${el.id} says: ${el.textContent}` );
});
<p class="testimonial" id="1">This is some text</p>
<div class="testimonial" id="2">Lorem ipsum</div>


স্প্রেড অপারেটর + অ্যারে স্বরলিপি প্রয়োজন হয় না, অবশ্যই করা doc..torAll.forEach()যথেষ্ট হবে?
অ্যাববিসিএসমিথ

ধন্যবাদ. একেবারে। [...ArrayLike]সময়ের ক্যোয়ারির জন্য ব্যবহার করা হয়েছে নির্বাচনকারীর সকলের পক্ষে সমর্থন ছিল না .forEach। @ আবাববিসিসিমিথ
রোকো সি

2

ক্লাস প্রশংসাপত্র সহ সমস্ত উপাদান লুপ করতে আপনি jQuery $ প্রতিটি পদ্ধতি ব্যবহার করতে পারেন। i => সংগ্রহের উপাদানটির সূচক এবং ভ্যাল আপনাকে সেই নির্দিষ্ট উপাদানটির অবজেক্ট দেয় এবং আপনি আপনার উপাদানটির বৈশিষ্ট্যগুলিকে আরও অ্যাক্সেস করতে "ভাল" ব্যবহার করতে পারেন এবং আপনার অবস্থাটি পরীক্ষা করতে পারেন।

$.each($('.testimonal'), function(i, val) { 
    if(your condition){
       //your action
    }
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.