جستجوی jQuery - روش contents()
مثال
تمام نودهای متن در یک پاراگراف را پیدا کرده و آنها را با برچسب تیره بسته میکند.
$("p").contents().filter(function(){ return this.nodeType != 1; }).wrap("<b/>");
تعریف و استفاده
روش contents() نودهای فرزند هر عنصر هماهنگ شده را به دست میآورد، از جمله نودهای متن و نظرات.
زبان نوشتاری
.contents()
شرح دقیق
اگر یک شیء jQuery از مجموعه عناصر DOM داده شود، روش .contents() به ما اجازه میدهد تا مستقیماً از این عناصر در درخت DOM، نودهای فرزند را به دست آوریم و با استفاده از عناصر هماهنگ شده، شیء جدید jQuery را ایجاد کنیم. .contents() و .children() روش مشابهی است، اما تفاوت این است که در جاوااسکریپت، عناصر HTML و گرههای متن در جاوااسکریپت شامل در نتایج jQuery هستند.
.contents() روشی است که میتوان از آن برای دریافت مستند محتوای iframe استفاده کرد، به شرطی که این iframe در همان حوزه با صفحه اصلی باشد.
در نظر بگیرید که این <div> دارای چندین گره متن است، هر گره توسط دو علامت خطشکن (<br/>) جدا شده است:
<div class="container"> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. <br /><br /> Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. <br /> <br /> Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. </div>
ما میتوانیم از روش .contents() برای تبدیل بلوکهای متن به پاراگرافهای خوب استفاده کنیم:
$('.container').contents().filter(function() { return this.nodeType == 3; ) .wrap('<p></p>') .end() .filter('br') .remove();
این کد ابتدا محتوای <div class="container"> را دریافت میکند، سپس گرههای متن را فیلتر میکند و آنها را در برچسبهای پاراگراف بسته میکند. این کار از طریق تست ویژگی .nodeType عناصر انجام میشود. این ویژگی شامل کد عددی نشاندهنده نوع گره است؛ گرههای متن از کد 3 استفاده میکنند. محتوا دوباره فیلتر میشود، این بار برای <br />، این عناصر حذف میشوند.