আমার কিছু সাধারণ এইচটিএমএল রয়েছে যা আমার সাধারণ ফর্ম্যাটিংটি স্ট্রিপ করা দরকার।
A nice house was found in <b>Toronto</b>.
আমার সাহসী অপসারণ করা দরকার, তবে বাক্যটি অক্ষত রেখে দিন।
কীভাবে এটি jQuery এ সম্ভব?
আমার কিছু সাধারণ এইচটিএমএল রয়েছে যা আমার সাধারণ ফর্ম্যাটিংটি স্ট্রিপ করা দরকার।
A nice house was found in <b>Toronto</b>.
আমার সাহসী অপসারণ করা দরকার, তবে বাক্যটি অক্ষত রেখে দিন।
কীভাবে এটি jQuery এ সম্ভব?
উত্তর:
$('b').contents().unwrap();
এই সব নির্বাচন <b>উপাদান, তারপর ব্যবহার.contents() পাঠ্য বিষয়বস্তু লক্ষ্য <b>, তারপর.unwrap() তার পিতা বা মাতা মুছে ফেলার জন্য <b>উপাদান।
সর্বাধিক অভিনয়ের জন্য, সর্বদা দেশীয় যান:
var b = document.getElementsByTagName('b');
while(b.length) {
var parent = b[ 0 ].parentNode;
while( b[ 0 ].firstChild ) {
parent.insertBefore( b[ 0 ].firstChild, b[ 0 ] );
}
parent.removeChild( b[ 0 ] );
}
এটি এখানে সরবরাহিত যে কোনও jQuery সমাধানের চেয়ে অনেক দ্রুত হবে।
.replacewith()অতিরিক্ত ডিওএম ট্র্যাভারসালের কারণে এটি তুলনামূলকভাবে ধীর হয় ... এটি যদি <b>কেবল এইচটিএমএল সহ কোনও ট্যাগ হয় তবে এটি আরও দ্রুত gets
parent.normalize()পরে আমি যুক্ত করেছি parent.removeChild(...। আপনি যদি ধারাবাহিকভাবে পৃষ্ঠাটি পরিবর্তন করে থাকেন তবে এটি সহায়ক ছিল।
আপনি এটির .replaceWith()মতো ব্যবহার করতে পারেন :
$("b").replaceWith(function() { return $(this).contents(); });
বা যদি আপনি জানেন তবে এটি কেবল একটি স্ট্রিং:
$("b").replaceWith(function() { return this.innerHTML; });
উপরের উভয় পদ্ধতির ব্যয়ের চেয়ে তুলনামূলক দ্রুততর হওয়ায় আপনি যদি প্রচুর পরিমাণে উপাদানকে সরিয়ে রাখেন তবে এটি একটি বড় পার্থক্য আনতে পারে .unwrap()।
অভ্যন্তরীণ এইচটিএমএল উপাদানগুলি সরিয়ে ফেলা এবং কেবলমাত্র পাঠ্য ফেরত দেওয়ার সহজ উপায়টি JQuery .text () ফাংশন করবে ।
উদাহরণ:
var text = $('<p>A nice house was found in <b>Toronto</b></p>');
alert( text.html() );
//Outputs A nice house was found in <b>Toronto</b>
alert( text.text() );
////Outputs A nice house was found in Toronto
এ কেমন?
$("b").insertAdjacentHTML("afterend",$("b").innerHTML);
$("b").parentNode.removeChild($("b"));
প্রথম লাইন bট্যাগের সরাসরি এইচটিএমএল বিষয়বস্তু ট্যাগের পরে সরাসরি অনুলিপি করে bএবং তারপরে দ্বিতীয় লাইনটি bকেবল এটির অনুলিপি করা সামগ্রীগুলি রেখে ডিওএম থেকে ট্যাগটি সরিয়ে দেয় ।
এটির ব্যবহার আরও সহজ করার জন্য আমি সাধারণত এটি একটি ফাংশনে আবদ্ধ করি:
function removeElementTags(element) {
element.insertAdjacentHTML("afterend",element.innerHTML);
element.parentNode.removeChild(element);
}
সমস্ত কোড আসলে খাঁটি জাভাস্ক্রিপ্ট, কেবলমাত্র জিকুয়্যারি ব্যবহার করা হচ্ছে এটি লক্ষ্যটিকে লক্ষ্য করার জন্য উপাদানটি নির্বাচন করা ( bপ্রথম উদাহরণের ট্যাগ)। ফাংশনটি কেবল খাঁটি জেএস: ডি
এছাড়াও দেখুন:
// For MSIE:
el.removeNode(false);
// Old js, w/o loops, using DocumentFragment:
function replaceWithContents (el) {
if (el.parentElement) {
if (el.childNodes.length) {
var range = document.createRange();
range.selectNodeContents(el);
el.parentNode.replaceChild(range.extractContents(), el);
} else {
el.parentNode.removeChild(el);
}
}
}
// Modern es:
const replaceWithContents = (el) => {
el.replaceWith(...el.childNodes);
};
// or just:
el.replaceWith(...el.childNodes);
// Today (2018) destructuring assignment works a little slower
// Modern es, using DocumentFragment.
// It may be faster than using ...rest
const replaceWithContents = (el) => {
if (el.parentElement) {
if (el.childNodes.length) {
const range = document.createRange();
range.selectNodeContents(el);
el.replaceWith(range.extractContents());
} else {
el.remove();
}
}
};
আর একটি নেটিভ সমাধান (কফিতে):
el = document.getElementsByTagName 'b'
docFrag = document.createDocumentFragment()
docFrag.appendChild el.firstChild while el.childNodes.length
el.parentNode.replaceChild docFrag, el
আমি জানি না এটি ব্যবহারকারীর 111116 এর সমাধানের চেয়ে দ্রুত কিনা তবে কারও কারও পক্ষে এটি বোঝা সহজ।
সহজ উত্তর হ'ল মন ফুঁকছে:
এখানে jQuery ছাড়াই জাভাস্ক্রিপ্ট দিয়ে এটি করা
function unwrap(selector) {
var nodelist = document.querySelectorAll(selector);
Array.prototype.forEach.call(nodelist, function(item,i){
item.outerHTML = item.innerHTML; // or item.innerText if you want to remove all inner html tags
})
}
unwrap('b')
পুরানো IE সহ সমস্ত বড় ব্রাউজারে এটি কাজ করা উচিত। সাম্প্রতিক ব্রাউজারে, আমরা এমনকি নডলিস্টে প্রত্যেকের জন্য কল করতে পারি।
function unwrap(selector) {
document.querySelectorAll('b').forEach( (item,i) => {
item.outerHTML = item.innerText;
} )
}
unwrap()এবং পাঠ্যের অংশটি কীভাবে পাওয়া যায় তা স্মরণ করতে পারিনি, ভুলে গেছি.contents()- দুর্দান্ত।