আপডেট 2018
যেহেতু এটি একটি দুর্দান্ত জনপ্রিয় উত্তর, আমি প্লাগইন হিসাবে টেক্সটনোড নির্বাচককে jQuery এ যুক্ত করে এটি সামান্য আপডেট এবং সুন্দর করার সিদ্ধান্ত নিয়েছি।
নীচের স্নিপেটে আপনি দেখতে পাচ্ছেন যে আমি একটি নতুন জিকুয়েরি ফাংশন সংজ্ঞায়িত করেছি যা সমস্ত (এবং কেবল) পাঠ্য নোডগুলি পায়। আপনি উদাহরণস্বরূপ first()ফাংশনটির সাথে এই ফাংশনটির চেইনও করতে পারেন । আমি টেক্সট নোডে একটি ছাঁটাই করি এবং এটি ট্রিমের পরে খালি না তা যাচাই করি কারণ ফাঁকা স্থান, ট্যাবগুলি, নতুন লাইনগুলি ইত্যাদি পাঠ্য নোড হিসাবে স্বীকৃত। আপনার যদি সেই নোডগুলির খুব বেশি প্রয়োজন হয় তবে jQuery ফাংশনে স্টেট স্টেটমেন্ট থেকে সরান।
আমি প্রথম টেক্সট নোডটি কীভাবে প্রতিস্থাপন করব এবং সমস্ত পাঠ্য নোড কীভাবে প্রতিস্থাপন করব তা আমি একটি উদাহরণ যুক্ত করেছি।
এই পদ্ধতির কোডটি পড়া সহজ করে তোলে এবং একাধিকবার এবং বিভিন্ন উদ্দেশ্যে এটি ব্যবহার করা সহজ করে তোলে।
আপডেট 2017 (adrach) যদি আপনি যে পছন্দ করা এখনও পাশাপাশি কাজ করা উচিত।
JQuery এক্সটেনশন হিসাবে
//Add a jQuery extension so it can be used on any jQuery object
jQuery.fn.textNodes = function() {
return this.contents().filter(function() {
return (this.nodeType === Node.TEXT_NODE && this.nodeValue.trim() !== "");
});
}
//Use the jQuery extension
$(document).ready(function(){
$('#replaceAll').on('click', () => {
$('#testSubject').textNodes().replaceWith('Replaced');
});
$('#replaceFirst').on('click', () => {
$('#testSubject').textNodes().first().replaceWith('Replaced First');
});
});
p {
margin: 0px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="testSubject">
**text to change**
<p>text that should not change</p>
<p>text that should not change</p>
**also text to change**
<p>text that should not change</p>
<p>text that should not change</p>
**last text to change**
</div>
<button id="replaceFirst">Replace First</button>
<button id="replaceAll">Replace All</button>
জাভাস্ক্রিপ্ট (ES) eivivilant
//Add a new function to the HTMLElement object so it cna be used on any HTMLElement
HTMLElement.prototype.textNodes = function() {
return [...this.childNodes].filter((node) => {
return (node.nodeType === Node.TEXT_NODE && node.nodeValue.trim() !== "");
});
}
//Use the new HTMLElement function
document.addEventListener('DOMContentLoaded', () => {
document.querySelector('#replaceAll').addEventListener('click', () => {
document.querySelector('#testSubject').textNodes().forEach((node) => {
node.textContent = 'Replaced';
});
});
document.querySelector('#replaceFirst').addEventListener('click', function() {
document.querySelector('#testSubject').textNodes()[0].textContent = 'Replaced First';
});
});
p {
margin: 0px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="testSubject">
**text to change**
<p>text that should not change</p>
<p>text that should not change</p>
**also text to change**
<p>text that should not change</p>
<p>text that should not change</p>
**last text to change**
</div>
<button id="replaceFirst">Replace First</button>
<button id="replaceAll">Replace All</button>
আপডেট আপডেট 2017 (অ্যাড্র্যাচ):
দেখে মনে হচ্ছে এটি পোস্ট হওয়ার পরে বেশ কয়েকটি জিনিস পরিবর্তিত হয়েছে। এখানে একটি আপডেট সংস্করণ
$("div").contents().filter(function(){ return this.nodeType == 3; }).first().replaceWith("change text");
আসল উত্তর (বর্তমান সংস্করণে কাজ করছে না)
$("div").contents().filter(function(){ return this.nodeType == 3; })
.filter(':first').text("change text");
সূত্র: http://api.jquery.com/contents/