آموزش متد ()end در جی کوئری

Ratings
(0)

مسئله: فرض کنید یه متد مثل ()filter یا ()find رو بر روی چند عنصر اجرا کرده ایم و حالا می خوایم تاثیر این متدها نادیده گرفته بشه. و یه مرحله به قبل برگردیم.

 راه حل: جی کوئری یه متد به نام end() داره که با اون می تونیم متدهایی مثل find() یا filter() رو به عقب برگردونیم؛ برای درک متد end() به کدهای زیر توجه کنید:

<!DOCTYPE html >
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  </head>
  <body>
    <p>text</p>
    <p class="middle">Middle <span>text</span></p>
    <p>text</p>
    <script type="text/JavaScript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script type="text/JavaScript">
      alert(jQuery('p').filter('.middle').length); // alerts 1 
      alert(jQuery('p').filter('.middle').end().length); //alerts 3
      alert(jQuery('p').filter('.middle').find('span').end().end().length); //alerts 3
    </script>
</body>
</html>

 اولین دستور alert() که در کدهای بالا به کار رفته، حاوی یک دستور جی کوئری هست که در سند به دنبال تمام عناصر <p> می گرده و سپس بر روی این مجموعه  عناصر <p> انتخاب شده، متد filter() را اعمال می کنه تا از این مجموعه، تنها عناصری انتخاب شوند که دارای کلاس middle هستند. سپس پروپرتی length گزارش می دهد که چه تعداد از عناصر انتخاب شده، باقی مانده اند:

alert(jQuery('p').filter('.middle').length); //alerts 1

 دستور alert() بعدی، از متد end() استفاده می کند. در اینجا ما داریم همان کاری که در دستورات بالا انجام دادیم را انجام می دهیم به جز اینکه ما متد filter() را نادیده گرفته ایم و به همان مجموعه عناصری که هنوز متد filter() در آن اعمال نشده است برگشته ایم(یعنی با استفاده از متد end() یک گام به عقب برگشته ایم):

alert(jQuery('p').filter('.middle').end().length); //alerts 3

 آخرین دستور alert() نشان می دهد که چگونه از متد end() دوبار استفاده شده است تا با استفاده از آن، هر دوی متدهای filter() و find() نادیده گرفته شوند و مجموعه عناصر انتخاب شده به موقعیت اولیه ی خود برگردانده می شود:

alert(jQuery('p').filter('.middle').find('span').end().end().length); //alerts 3

 


توضیحات اضافی

اگر متد end() به کار برده شود و قبل از آن هیچ متد یا عملیات جستجوی عنصری(عملیات مخرب)  انجام نشده باشد، یک مجموعه ی خالی برگردانده می شود. عملیات مخرب(destructive operation) به هر عملی گفته می شود که مجموعه عناصر جی کوئری مورد تطابق قرار گرفته را تغییر دهد، یعنی هر متد دستکاری کننده ای که یک شیء جی کوئری(jQuery) را برگرداند که شامل متدهای زیر می شود:

  •  add()
  • andSelf()
  • children()
  • closes()
  • filter()
  • find()
  • map()
  • next()
  • nextAll()
  • not()
  • parent()
  • parents()
  • prev()
  • prevAll()
  • siblings()
  • slice()
  • clone()
  • appendTo()
  • prependTo()
  • insertBefore()
  • insertAfter()
  • replaceAll()

 

  • بازدید: 681

نوشتن دیدگاه

لطفا نظرات خود را بیان کنید. به سوالات در سریع ترین زمان پاسخ داده خواهد شد.اما به نکات زیر توجه کنید:
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.

ارسال