ধরা যাক <div>
একটি পৃষ্ঠায় আমার তিনটি উপাদান রয়েছে। আমি কীভাবে প্রথম এবং তৃতীয় অবস্থানের অদলবদল করতে পারি <div>
? jQuery ঠিক আছে।
উত্তর:
JQuery সঙ্গে তুচ্ছ
$('#div1').insertAfter('#div3');
$('#div3').insertBefore('#div2');
আপনি যদি বারবার এটি করতে চান তবে আপনাকে বিভিন্ন নির্বাচক ব্যবহার করতে হবে যেহেতু ডিভগুলি চারপাশে সরে যাওয়ার সাথে সাথে তাদের আইডিগুলি বজায় রাখবে।
$(function() {
setInterval( function() {
$('div:first').insertAfter($('div').eq(2));
$('div').eq(1).insertBefore('div:first');
}, 3000 );
});
var html = $('#container').html(); ...; $('#container').html(html);
এ জাতীয় তুচ্ছ কাজের জন্য একটি লাইব্রেরি ব্যবহার করার দরকার নেই:
var divs = document.getElementsByTagName("div"); // order: first, second, third
divs[2].parentNode.insertBefore(divs[2], divs[0]); // order: third, first, second
divs[2].parentNode.insertBefore(divs[2], divs[1]); // order: third, second, first
এটি সত্য যে অ্যাকাউন্টটি গ্রহণ করে যে getElementsByTagName
কোনও লাইভ নোডলিস্ট প্রত্যাবর্তন করে যা স্বয়ংক্রিয়ভাবে আপডেট হয় DOM- র উপাদানগুলি যাতে ম্যানিপুলেট করা হয় তার ক্রম প্রতিবিম্বিত করতে।
আপনি এটি ব্যবহার করতে পারেন:
var divs = document.getElementsByTagName("div"); // order: first, second, third
divs[0].parentNode.appendChild(divs[0]); // order: second, third, first
divs[1].parentNode.insertBefore(divs[0], divs[1]); // order: third, second, first
এবং অন্যান্য বিভিন্ন সম্ভাব্য অনুমতি রয়েছে, যদি আপনি পরীক্ষার মতো মনে করেন:
divs[0].parentNode.appendChild(divs[0].parentNode.replaceChild(divs[2], divs[0]));
উদাহরণ স্বরূপ :-)
আধুনিক ভ্যানিলা জেএস ব্যবহার করুন! আগের চেয়ে ভাল / ক্লিনার পিতামাতাকে রেফারেন্স দেওয়ার দরকার নেই।
const div1 = document.getElementById("div1");
const div2 = document.getElementById("div2");
const div3 = document.getElementById("div3");
div2.after(div1);
div2.before(div3);
ব্রাউজার সমর্থন - অক্টোবর '20 এ 95% গ্লোবাল
jQuery.fn.swap = function(b){
b = jQuery(b)[0];
var a = this[0];
var t = a.parentNode.insertBefore(document.createTextNode(''), a);
b.parentNode.insertBefore(a, b);
t.parentNode.insertBefore(b, t);
t.parentNode.removeChild(t);
return this;
};
এবং এটি এর মতো ব্যবহার করুন:
$('#div1').swap('#div2');
আপনি jQuery ব্যবহার করতে না চাইলে আপনি সহজেই ফাংশনটি মানিয়ে নিতে পারেন।
var swap = function () {
var divs = document.getElementsByTagName('div');
var div1 = divs[0];
var div2 = divs[1];
var div3 = divs[2];
div3.parentNode.insertBefore(div1, div3);
div1.parentNode.insertBefore(div3, div2);
};
এই ফাংশনটি অদ্ভুত বলে মনে হতে পারে তবে সঠিকভাবে কাজ করার জন্য এটি ভারী মানগুলির উপর নির্ভর করে। প্রকৃতপক্ষে, ট্যাভানফসন যে jQuery সংস্করণটি পোস্ট করেছে যা কেবলমাত্র দু'বার অদলবদল করে বলে মনে হচ্ছে এটি jQuery সংস্করণের চেয়ে আরও ভাল কাজ করবে বলে মনে হচ্ছে ।
এটি কোন মানদণ্ডের উপর নির্ভর করে?
insertBefire বিদ্যমান শিশু নোড রেফচিল্ডের আগে নোড নতুনচিল্ড সন্নিবেশ করান। যদি রেফচাইল্ডটি নাল হয় তবে বাচ্চাদের তালিকার শেষে নিউচিল্ডটি .োকান। যদি নিউচিল্ড একটি ডকুমেন্টফ্রেগমেন্ট অবজেক্ট হয় তবে তার সমস্ত শিশুকে একই ক্রমে, রেফচিল্ডের আগে inোকানো হবে। নতুনচিল্ড যদি ইতিমধ্যে গাছটিতে থাকে তবে এটি প্রথমে সরানো হবে।
উপরে উল্লিখিত জকোরি পদ্ধতির কাজ করবে। আপনি জিকিউরি এবং সিএসএসও ব্যবহার করতে পারেন। উদাহরণস্বরূপ যেমন ডিভের উপর আপনি ক্লাস 1 এবং ডিভ 2 ব্যবহার করেছেন ক্লাস 2 প্রয়োগ করেছেন (উদাহরণস্বরূপ বলা যাক CSS এর প্রতিটি ক্লাস ব্রাউজারে নির্দিষ্ট অবস্থান সরবরাহ করে), এখন আপনি ক্লাসগুলি ইন্টারফেস করতে পারবেন jquery ব্যবহার করুন বা জাভাস্ক্রিপ্ট (যে অবস্থান পরিবর্তন করবে)
এই থ্রেডটি ফাটিয়ে দেওয়ার জন্য দুঃখিত আমি "অদলবদল ডোম-উপাদানগুলি" সমস্যার জন্য হোঁচট খেয়েছি এবং কিছুটা প্রায় খেললাম
ফলাফলটি একটি jQuery- স্থানীয় "সমাধান" যা সত্যই সুন্দর বলে মনে হচ্ছে (দুর্ভাগ্যক্রমে আমি জানি না যে jQuery ইন্টার্নালগুলিতে এটি করার সময় কী ঘটছে)
কোড:
$('#element1').insertAfter($('#element2'));
JQuery ডকুমেন্টেশন বলে যে উপাদানটি insertAfter()
সরায় এবং এটি ক্লোন করে না