Академический Документы
Профессиональный Документы
Культура Документы
jQuery
ﺍﻹﺻﺪﺍﺭ1.0 :
الفھرس
11 ........................................................................................ (jQuery Core) jQuery أساسيات
11 ....................................................................................... $(…) ً أو اختصاراjQuery التابع
11 ............................................................................... jQuery(expression, [context])
12 ........................................................................... jQuery(html, [ownerDocument])
12 ................................................................................................ jQuery(elements)
13 ...................................................................................................... jQyery(callback)
13 ................................................................................. jQuery أمثلة على التوابع األساسية في
15 ....................................................................................................... jQuery المحددات في
15 .............................................................................................. Basics المحددات األساسية
15 ..................................................................................................................... #id
16 ..................................................................................................... element المحدد
17 ......................................................................................................... .class المحدد
18 ............................................................................................................... * المحدد
19 ..................................................................... selector1, selector2, selectorN المحدد
20 ..................................................................................Hierarchy محددات التسلسل الھرمي
20 ................................................................................... ancestor descendant المحدد
22 ............................................................................................. parent > child المحدد
23 ................................................................................................. prev + next المحدد
24 ............................................................................................. prev ~ siblings المحدد
26 ..................................................................................... Basic Filters المرشحات األساسية
26 ......................................................................................................... :first المرشح
27 .......................................................................................................... :last المرشح
27 ............................................................................................ :not(selector) المرشح
29 ........................................................................................................ :even المرشح
30 ......................................................................................................... :odd المرشح
31 ................................................................................................. :eq(index) المرشح
31 .................................................................................................. :gt(index) المرشح
32 .................................................................................................. :gt(index) المرشح
33 ..................................................................................................... :header المرشح
34 ................................................................................................. :animated المرشح
35 .................................................................................. Content Filters مرشحات المحتوى
35 ........................................................................................... :contains(text) المرشح
36 ...................................................................................................... :empty المرشح
)]jQuery(expression, [context
ﻳﻘﺒﻞ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ ﻣﻦ ﺍﳌﻤﻜﻦ ﺃﻥ ﲢﺘﻮﻱ ﻋﻠﻰ ﳏﺪﺩ CSSﺣﻴﺚ ﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻪ ﳌﻄﺎﺑﻘﺔ
ﳎﻤﻮﻋﺔ ﻣﻦ ﺍﻟﻌﻨﺎﺻﺮ.
ﺍﻟﻮﻇﺎﺋﻒ ﺍﻷﺳﺎﺳﻴﺔ ﳌﻜﺘﺒﺔ jQueryﺗﻌﺘﻤﺪ ﻋﻠﻰ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﺣﻴﺚ ﺃﻥ ﻛﻞ ﺷﻲﺀ ﻓﻴﻬﺎ ﻳﻌﺘﻤﺪ ﻋﻠﻰ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﺍ
ﺍﻟﺘﺎﺑﻊ ,ﻭﺍﻻﺳﺘﺨﺪﺍﻡ ﺍﻷﺳﺎﺳﻲ ﳍﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻳﻜﻮﻥ ﰲ ﲤﺮﻳﺮ ﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ ﻗﺪ ﲢﺘﻮﻱ ﻋﻠﻰ ﳏﺪﺩ CSSﻋﻨﺪﻫﺎ ﻳﻌﻴﺪ ﻫﺬﺍ
ﺍﻟﺘﺎﺑﻊ ﲨﻴﻊ ﻋﻨﺎﺻﺮ ﺍﻟـ HTMLﺍﻟﱵ ﺗﺘﻄﺎﺑﻖ ﻣﻊ ﺍﻟﺴﻠﺴﻠﺔ ﺍﻟﻨﺼﻴﺔ ﺍﻟﱵ ﰎ ﲤﺮﻳﺮﻫﺎ
ﺑﺸﻜﻞ ﺍﻓﺘﺮﺍﺿﻲ ﺇﺫﺍ ﱂ ﻳﺘﻢ ﲢﺪﻳﺪ ﺳﻴﺎﻕ contextﻟﻠﺘﺎﺑﻊ ﻓﺈﻥ ﺍﻟﺘﺎﺑﻊ )( $ﻳﺒﺤﺚ ﻋﻦ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﺗﻄﺎﺑﻖ
ﺷﺮﻭﻁ ﺍﻟﺒﺤﺚ ﺿﻤﻦ ﲨﻴﻊ ﻋﻨﺎﺻﺮ HTMLﺍﳌﻮﺟﻮﺩﺓ ﰲ ﺍﻟﻮﺛﻴﻘﺔ ﺍﳊﺎﻟﻴﺔ.
أمثلة
ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﻄﺎﺑﻖ ﲨﻴﻊ ﻋﻨﺎﺻﺮ ﺍﻻﺩﺧﺎﻝ ﻣﻦ ﺍﻟﻨﻮﻉ radioﰲ ﺍﻟﻨﻤﻮﺫﺝ formﺍﻷﻭﻝ ﺿﻤﻦ ﺍﻟﻮﺛﻴﻘﺔ
ﺍﳊﺎﻟﻴﺔ:
ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﻄﺎﺑﻖ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ divﺿﻤﻦ ﺑﻴﺎﻧﺎﺕ ﻣﻦ ﺍﻟﻨﻮﻉ XMLﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻦ ﺑﻴﺎﻧﺎﺕ ﻧﺎﲡﺔ ﻋﻦ
ﺍﺳﺘﺪﻋﺎﺀ ﺗﻮﺍﺑﻊ :AJAX
ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﻀﻊ ﺇﻃﺎﺭ ﺣﻮﻝ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ pﺍﳌﻮﺟﻮﺩﺓ ﺿﻤﻦ ﺍﻟﻌﻨﺼﺮ :div
)]jQuery(html, [ownerDocument
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﺒﻨﺎﺀ ﺻﻴﻐﺔ HTMLﻣﺒﺎﺷﺮﺓ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ ﲢﺘﻮﻱ ﻋﻠﻰ ﺍﻟﻌﻨﺎﺻﺮ ﺍﳌﺸﻜﻠﺔ
ﻟﻌﻨﺎﺻﺮ ﺍﻟـ .HTMLﺣﻴﺚ ﳝﻜﻦ ﺑﻨﺎﺀ ﻋﻨﺎﺻﺮ ﺑﺴﻴﻄﺔ ﺑﺪﻭﻥ ﺃﻱ ﺣﻮﺍﺹ ﺇﺿﺎﻓﻴﺔ ﻣﺜﻞ "> "<div /ﺣﻴﺚ
ﻳﺴﺘﺨﺪﻡ ﺍﻟﺘﺎﺑﻊ .document.createElementﺃﻣﺎ ﰲ ﺣﺎﻟﺔ ﺍﻟﻌﻨﺎﺻﺮ ﺍﳌﻌﻘﺪﺓ ﻓﻴﺘﻢ ﻣﻌﺎﳉﺘﻬﺎ ﺑﺈﺳﻨﺎﺩ ﺍﻟﺴﻠﺴﻠﺔ
ﺍﻟﻨﺼﻴﺔ ﺇﱃ ﺍﳋﺎﺻﻴﺔ innerHTMLﻟﻌﻨﺼﺮ .divﻟﺬﻟﻚ ﻻ ﳝﻜﻦ ﺃﻥ ﲢﺘﻮﻱ ﺍﻟﺴﻠﺴﻠﺔ ﺍﻟﻨﺼﻴﺔ htmlﻋﻠﻰ ﻋﻨﺎﺻﺮ
ﻻ ﳝﻜﻦ ﺃﻥ ﺗﻀﻤﻦ ﺿﻤﻦ ﻋﻨﺼﺮ divﻣﺜﻞ .html, head, body, title
أمثلة
ﺇﻧﺸﺎﺀ ﻋﻨﺼﺮ divﻭﲨﻴﻊ ﻋﻨﺎﺻﺮﻩ ﺩﻳﻨﺎﻣﻴﻜﻴﹰﺎ ﻭﺇﳊﺎﻗﻬﺎ ﲟﺤﺘﻮﻯ ﺍﻟﻌﻨﺼﺮ ,bodyﻭﻣﺎﻳﺘﻢ ﺗﻘﻨﻴﹰﺎ ﻫﻮ ﺃﻧﻪ ﻳﺘﻢ
ﺇﻧﺸﺎﺀ ﻋﻨﺼﺮ divﻭﺇﺳﻨﺎﺩ ﺍﻟﻘﻴﻤﺔ ) htmlﻗﻴﻤﺔ ﺍﻟﺴﻠﺴﻠﺔ ﺍﻟﻨﺼﻴﺔ( ﺇﱃ ﺧﺎﺻﻴﺘﻪ innerHTMLﻭﻫﺬﺍ ﻣﺎﻳﻮﻓﺮ ﻣﺮﻭﻧﺔ
ﻋﺎﻟﻴﺔ ﻭﺑﻌﺾ ﺍﶈﺪﻭﺩﻳﺔ:
)jQuery(elements
ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻳﺘﻌﺎﻣﻞ ﻣﻊ ﻋﻨﺼﺮ ﺃﻭ ﻣﺼﻔﻮﻓﺔ ﻋﻨﺎﺻﺮ ﻛﻤﺎ ﳝﻜﻦ ﲤﺮﻳﺮ ﻋﻨﺼﺮ ﻣﻦ ﺍﻟﻨﻮﻉ XMLﻭﺧﺎﺻﺔ ﻋﻨﺪ
ﺍﻟﺘﻌﺎﻣﻞ ﻣﻊ ﺗﻮﺍﺑﻊ AJAXﺍﻟﱵ ﺗﻌﻴﺪ ﻧﺘﺎﺋﺞ ﻋﻠﻰ ﺷﻜﻞ .XML
ﺃﻣﺎ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻓﻴﺨﻔﻲ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺿﻤﻦ ﳕﻮﺫﺝ ﺇﺩﺧﺎﻝ ﺍﻟﺒﻴﺎﻧﺎﺕ:
)jQyery(callback
ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻫﻮ ﺍﺧﺘﺼﺎﺭ ﻟﻠﻌﺒﺎﺭﺓ )( $(document).readyﻭﻳﺴﻤﺢ ﺍﻟﺘﺎﺑﻊ ﺑﺘﻨﻔﻴﺬ ﺗﺎﺑﻊ ﺃﻭ ﺃﻛﺜﺮ ﻋﻨﺪﻣﺎ
ﻳﺼﺒﺢ ﻣﻦ ﺍﳌﻤﻜﻦ ﺗﻨﻔﻴﺬ ﺗﻌﻠﻴﻤﺎﺕ JavaScriptﰲ ﺍﻟﻮﺛﻴﻘﺔ .ﻭﳝﻜﻦ ﺍﺳﺘﺪﻋﺎﺀ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﺃﻛﺜﺮ ﻣﻦ ﻣﺮﺓ ﰲ ﻧﻔﺲ
ﺍﻟﻮﺛﻴﻘﺔ ,ﻭﻛﻤﺜﺎﻝ ﻋﻠﻰ ﺫﻟﻚ:
ﺃﻣﺎ ﺍﳍﺪﻑ ﻣﻦ ﺷﻴﻔﺮﺓ ﺍﻟـ javaScriptﻓﻬﻮ ﻭﺿﻊ ﺇﻃﺎﺭ ﺣﻮﻝ ﺍﻟﻌﻨﺼﺮ divﺫﻭ ﺍﻻﺳﻢ boxﻭﻣﻦ ﰒ ﺇﺧﻔﺎﺀ ﺍﻟﻌﻨﺼﺮ
pﺫﻭ ﺍﻻﺳﻢ ,parﻭﻋﻨﺪ ﺍﻟﻀﻐﻂ ﻋﻠﻰ ﻋﻠﻰ ﺍﻟﺮﺍﺑﻂ aﺳﻴﺘﻢ ﺇﻧﺸﺎﺀ ﻧﺺ ﺩﻳﻨﺎﻣﻴﻜﻲ ﻭﺇﺩﺭﺍﺟﻪ ﺿﻤﻦ ﺍﻟﻌﻨﺼﺮ .div
ﻭﺍﻟﺸﻴﻔﺮﺓ ﺍﻟﺘﺎﻟﻴﺔ ﺗﻨﻔﺬ ﻛﻞ ﻣﺎﻭﺭﺩ ﺃﻋﻼﻩ ,ﺣﻴﺚ ﻧﻼﺣﻆ ﻭﺟﻮﺩ ﺗﻌﻠﻴﻖ ﻗﺒﻞ ﻛﻞ ﻧﻮﻉ ﻣﻦ ﺃﻧﻮﺍﻉ ﺗﻮﺍﺑﻊ ,jQueryﺍﻟﺴﻄﺮ
ﺍﻟﺘﺎﱄ ﻳﻌﱪ ﻋﻦ ﺗﻨﻔﻴﺬ ﺗﺎﺑﻊ ﻣﻦ ﺍﻟﻨﻮﻉ ):jQuery(callback
ﺣﻴﺚ ﻭﻛﻤﺎ ﺫﻛﺮﻧﺎ ﺃﻋﻼﻩ ﺑﺄﻥ ﺍﻟﺸﻴﻔﺮﺓ ﺍﻟﱵ ﺿﻤﻦ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻳﺘﻢ ﺗﻨﻔﻴﺬﻫﺎ ﰲ ﺣﺎﻝ ﺃﺻﺒﺢ ﻣﻦ ﺍﳌﻤﻜﻦ ﺗﻨﻔﻴﺬ ﺗﻌﻠﻴﻤﺎﺕ
DOMﺿﻤﻦ ﺍﻟﻮﺛﻴﻘﺔ.
ﺣﻴﺚ ﻳﺘﻢ ﺇﻧﺸﺎﺀ ﻋﻨﺼﺮ pﺑﺸﻜﻞ ﺩﻳﻨﺎﻣﻴﻜﻲ ﻭﻣﻦ ﰒ ﻳﺘﻢ ﺇﺩﺭﺍﺟﻪ ﲢﺖ ﺍﻟﻌﻨﺼﺮ divﺫﻭ ﺍﻻﺳﻢ .box
ﻭﺃﺧﲑﹰﺍ ﻓﺈﻥ ﺍﻟﺴﻄﺮ ﺍﻟﺘﺎﱄ ﻳﻌﱪ ﻋﻦ ﺗﻨﻔﻴﺬ ﺍﻟﺘﺎﺑﻊ ﻣﻦ ﺍﻟﺸﻜﻞ ): jQuery(elements
ﺍﳌﺜﺎﻝ ﺍﻟﺴﺎﺑﻖ ﻳﺒﺤﺚ ﻋﻦ ﻋﻨﺼﺮ ﻗﻴﻤﺔ ﺍﻟﺴﻤﺔ idﻟﻪ ﻫﻲ ] ,myID.entry[1ﻭﺍﻟﻔﻘﺮﺓ ﺍﻟﺘﺎﻟﻴﺔ ﲢﺘﻮﻱ ﻋﻠﻰ ﻛﺎﻣﻞ
ﺍﻟﺸﻴﻔﺮﺓ ,ﺣﻴﺚ ﻳﺘﻢ ﺍﻟﺒﺤﺚ ﻋﻦ ﺍﻟﻌﻨﺼﺮ ﺍﻟﺬﻱ ﲰﺘﻪ ﻫﻲ ] myID.entry[1ﻭﻳﻀﻊ ﻟﻪ ﺇﻃﺎﺭ ﲰﻜﻪ 3ﺑﻴﻜﺴﻞ ﻭﻟﻮﻧﻪ
ﺃﲪﺮ .ﻭﳚﺐ ﺍﻻﻧﺘﺒﺎﻩ ﺇﱃ ﺍﺳﺘﺨﺪﺍﻡ ﺭﻣﺰﻱ \\ ﻟﺘﺠﺎﻭﺯ ﺍﶈﺎﺭﻑ ﺍﳋﺎﺻﺔ ﻭﻫﻲ ﺍﻟﻨﻘﻄﺔ ) (.ﻭﺍﻟﺮﻣﺰ [ ﻭﺍﻟﺮﻣﺰ ﺍﻵﺧﺮ ]:
ﺃﻣﺎ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻓﻴﺘﻢ ﺇﺣﺎﻃﺔ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﺗﻨﺪﺭﺝ ﲢﺖ ﺍﻟﻌﻨﺼﺮ ﺍﻟﺬﻱ ﻗﻴﻤﺔ ﺍﻟﺴﻤﺔ idﻟﻪ ﻫﻲ mainﺑﺈﻃﺎﺭ ﺃﲪﺮ
ﻣﻀﺎﻋﻒ ﺑﻐﺾ ﺍﻟﻨﻈﺮ ﻋﻦ ﺍﻟﻌﻨﺼﺮ ﻋﺮﺿﻪ 4ﺑﻴﻜﺴﻞ ,ﻃﺒﻌﹰﺎ ﺍﶈﺪﺩ * ﰲ ﻫﺬﺍ ﺍﳌﺜﺎﻝ ﻳﺮﻣﺰ ﺇﱃ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﺗﻨﺪﺭﺝ ﻣﺒﺎﺷﺮﺓ
ﲢﺖ ﺍﻟﻌﻨﺼﺮ ﺍﻟﺬﻱ ﻗﻴﻤﺔ ﺍﻟﺴﻤﺔ idﺗﺴﺎﻭﻱ mainﺃﻱ ﺍﻷﺣﻔﺎﺩ ﰲ ﺍﳌﺴﺘﻮﻯ ﺍﻷﻭﻝ ﻟﻠﻌﻨﺼﺮ:
المرشح ):not(selector
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﳌﺮﺷﺢ ﻻﺳﺘﺜﻨﺎﺀ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﺗﺘﻄﺎﺑﻖ ﻣﻊ ﺻﻴﻐﺔ selectorﻣﻦ ﻧﺘﻴﺠﺔ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﻳﺴﺒﻖ
ﺍﺳﺘﺨﺪﺍﻡ ﺍﳌﺮﺷﺢ ) ,:not(selectorﻭﻳﺪﻋﻢ ﻫﺬﺍ ﺍﳌﺮﺷﺢ ﺍﶈﺪﺩﺍﺕ ﻣﻦ ﺍﻟﻨﻮﻉ selector1, selectorN
ﻭﺣﱴ ﻳﺪﻋﻢ ﺍﶈﺪﺩﺍﺕ ﺍﳌﻌﻘﺪﺓ ﻣﺜﻞ ﺍﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ #idﻭﻏﲑﻩ ﻣﻦ ﺍﶈﺪﺩﺍﺕ ﺍﻷﺧﺮﻯ ,ﻭﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺴﻨﺪ ﻟﻠﻮﻥ
المرشح ):gt(index
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﳌﺮﺷﺢ ﳌﻄﺎﺑﻘﺔ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﺗﺮﺗﻴﺒﻬﺎ ﺃﻛﱪ ﲤﺎﻣﹰﺎ ﻣﻦ ﺍﻟﺘﺮﺗﻴﺐ ﺍﶈﺪﺩ indexﻟﻠﻤﺮﺷﺢ gt
ﻣﻊ ﺍﻟﻌﻠﻢ ﺃﻥ ﺍﻟﻌﺪ ﻳﺒﺪﺃ ﻣﻦ ﺍﻟﻌﺪﺩ ,0ﻭﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﻐﲑ ﻣﻮﺍﺻﻔﺎﺕ ﺧﻂ ﲨﻴﻊ ﺍﳋﻼﻳﺎ ﺍﻟﱵ ﺗﺮﺗﻴﺒﻬﺎ ﺃﻛﱪ ﻣﻦ ﺍﻟﺘﺮﺗﻴﺐ 4
ﺃﻱ ﻳﺒﺪﺃ ﺍﻟﺘﻌﺪﻳﻞ ﻣﻦ ﺑﻌﺪ ﺍﳋﻠﻴﺔ ﺍﳋﺎﻣﺴﺔ:
المرشح ):gt(index
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﳌﺮﺷﺢ ﳌﻄﺎﺑﻘﺔ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﺗﺮﺗﻴﺒﻬﺎ ﺃﺻﻐﺮ ﲤﺎﻣﹰﺎ ﻣﻦ ﺍﻟﺘﺮﺗﻴﺐ ﺍﶈﺪﺩ indexﻟﻠﻤﺮﺷﺢ lt
ﻣﻊ ﺍﻟﻌﻠﻢ ﺃﻥ ﺍﻟﻌﺪ ﻳﺒﺪﺃ ﻣﻦ ﺍﻟﻌﺪﺩ ,0ﻭﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﻐﲑ ﻣﻮﺍﺻﻔﺎﺕ ﺧﻂ ﲨﻴﻊ ﺍﳋﻼﻳﺎ ﺍﻟﱵ ﺗﺮﺗﻴﺒﻬﺎ ﺃﺻﻐﺮ ﻣﻦ ﺍﻟﺘﺮﺗﻴﺐ 4
ﻓﻘﻂ: ﺍﻷﻭﱃ ﺍﻷﺭﺑﻌﺔ ﺍﳋﻼﻳﺎ ﻋﻠﻰ ﺍﻟﺘﻌﺪﻳﻞ ﻳﺘﻢ ﺃﻱ
المرشح :header
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﳌﺮﺷﺢ ﳌﻄﺎﺑﻘﺔ ﺍﻟﻌﻨﺎﺻﺮ ,h1, h2, h3, h4, h5, h6ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺗﻐﻴﲑ ﻟﻮﻥ
ﺧﻂ ﻭﺧﻠﻔﻴﺔ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﺗﻨﺘﻤﻲ ﺇﱃ ﺍﻤﻮﻋﺔ ﺍﻟﺴﺎﺑﻘﺔ:
المرشح :empty
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﳌﺮﺷﺢ ﳌﻄﺎﺑﻘﺔ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﻟﻴﺲ ﳍﺎ ﻋﻨﺎﺻﺮ ﺃﺑﻨﺎﺀ ﺃﻱ ﺍﻟﱵ ﻻ ﲢﺘﻮﻱ ﻋﻨﺎﺻﺮ ﺃﺧﺮﻯ
ﺩﺍﺧﻠﻬﺎ ,ﻭﻫﺬﻩ ﺍﻟﻌﻨﺎﺻﺮ ﻳﺘﻢ ﻣﻄﺎﺑﻘﺘﻬﺎ ﻣﻦ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﺗﻨﺘﺞ ﻋﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﻳﺴﺒﻖ ﻫﺬﺍ ﺍﳌﺮﺷﺢ ﺃﻭ ﲨﻴﻊ
ﻋﻨﺎﺻﺮ ﺍﻟﺼﻔﺤﺔ ,ﻓﻔﻲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﻣﻄﺎﺑﻘﺔ ﲨﻴﻊ ﻋﻨﺎﺻﺮ tdﺍﻟﱵ ﻻ ﲢﺘﻮﻱ ﻋﻠﻰ ﻋﻨﺎﺻﺮ ﺃﺑﻨﺎﺀ ﺃﻭ ﺣﱴ ﻧﺼﻮﺹ:
المرشح ][attribute$=value
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﳌﺮﺷﺢ ﳌﻄﺎﺑﻘﺔ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﳍﺎ ﺍﻟﺴﻤﺔ attributeﻭﻗﻴﻤﺔ ﻫﺬﻩ ﺍﻟﺴﻤﺔ ﺗﻨﺘﻬﻲ ﺑﺎﻟﻘﻴﻤﺔ
,valueﻭﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﻜﺘﺐ ﺍﻟﻘﻴﻤﺔ a letterﰲ ﺍﻟﻌﻨﺎﺻﺮ inputﺍﻟﱵ ﳍﺎ ﺍﻟﺴﻤﺔ nameﻭﻗﻴﻤﺘﻬﺎ ﺗﻨﺘﻬﻲ ﺑﺎﻟﻘﻴﻤﺔ
:letter
المرشح ][attribute*=value
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﳌﺮﺷﺢ ﳌﻄﺎﺑﻘﺔ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﳍﺎ ﺍﻟﺴﻤﺔ attributeﻭﻗﻴﻤﺔ ﻫﺬﻩ ﺍﻟﺴﻤﺔ ﲢﺘﻮﻱ ﻋﻠﻰ
ﺍﻟﻘﻴﻤﺔ ,valueﻭﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﻜﺘﺐ ﺍﻟﻘﻴﻤﺔ ! has man in itﰲ ﺍﻟﻌﻨﺎﺻﺮ inputﺍﻟﱵ ﳍﺎ ﺍﻟﺴﻤﺔ name
ﻭﻗﻴﻤﺘﻬﺎ ﺗﻨﺘﻬﻲ ﺑﺎﻟﻘﻴﻤﺔ :man
المرشح ][attributeFilter1][attributeFilter2][attributeFilterN
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﳌﺮﺷﺢ ﳌﻄﺎﺑﻘﺔ ﲨﻴﻊ ﻣﺮﺷﺤﺎﺕ ﺍﻟﺴﻤﺎﺕ ﺍﶈﺪﺩﺓ ,ﻭﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﻜﺘﺐ ﺍﺍﻟﻘﻴﻤﺔ only thin
oneﰲ ﺍﻟﻌﻨﺼﺮ inputﺍﻟﺬﻱ ﳝﺘﻠﻚ ﺍﻟﺴﻤﺔ idﻭﺍﻟﺴﻤﺔ nameﻭﺗﻨﺘﻬﻲ ﺍﻟﺴﻤﺔ nameﺑﺎﻟﻘﻴﻤﺔ :man
:checkbox
ﻳﻄﺎﺑﻖ ﲤﺎﻣﹰﺎ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺃﺧﺮﻯ ﰲ ﻗﺴﻢ ﺍﻟﻨﻤﺎﺫﺝ ﻭﻟﻜﻦ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻣﻪ ﺑﻜﺘﺎﺑﺔ:
)'$('input:checkbox
:submit
ﻳﻄﺎﺑﻖ ﲤﺎﻣﹰﺎ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺃﺧﺮﻯ ﰲ ﻗﺴﻢ ﺍﻟﻨﻤﺎﺫﺝ ﻭﻟﻜﻦ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻣﻪ ﺑﻜﺘﺎﺑﺔ$('input:submit') :
60 ﲨﻴﻊ ﺍﳊﻘﻮﻕ ﺗﺘﺒﻊ ﳊﻘﻮﻕ ﻣﻜﺘﺒﺔ jQuery
:image
ﻳﻄﺎﺑﻖ ﲤﺎﻣﹰﺎ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺃﺧﺮﻯ ﰲ ﻗﺴﻢ ﺍﻟﻨﻤﺎﺫﺝ ﻭﻟﻜﻦ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻣﻪ ﺑﻜﺘﺎﺑﺔ$('input:image') :
:reset
ﻳﻄﺎﺑﻖ ﲤﺎﻣﹰﺎ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺃﺧﺮﻯ ﰲ ﻗﺴﻢ ﺍﻟﻨﻤﺎﺫﺝ ﻭﻟﻜﻦ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻣﻪ ﺑﻜﺘﺎﺑﺔ$('input:reset') :
:button
ﻳﻄﺎﺑﻖ ﲤﺎﻣﹰﺎ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺃﺧﺮﻯ ﰲ ﻗﺴﻢ ﺍﻟﻨﻤﺎﺫﺝ ﻭﻟﻜﻦ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻣﻪ ﺑﻜﺘﺎﺑﺔ$('input:button') :
:file
ﻳﻄﺎﺑﻖ ﲤﺎﻣﹰﺎ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺃﺧﺮﻯ ﰲ ﻗﺴﻢ ﺍﻟﻨﻤﺎﺫﺝ ﻭﻟﻜﻦ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻣﻪ ﺑﻜﺘﺎﺑﺔ$('input:file') :
:hidden
ﻳﻄﺎﺑﻖ ﲤﺎﻣﹰﺎ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺃﺧﺮﻯ ﰲ ﻗﺴﻢ ﺍﻟﻨﻤﺎﺫﺝ ﻭﻟﻜﻦ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻣﻪ ﺑﻜﺘﺎﺑﺔ$('input:hidden') :
السمات Attributes
)attr(name
ﻳﺴﺘﺨﺪﻡ ﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ ﻗﻴﻤﺔ ﺇﺣﺪﻯ ﺻﻔﺎﺕ ﺃﻭﻝ ﻋﻨﺼﺮ ﺗﺘﻢ ﻣﻄﺎﺑﻘﺘﻪ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺃﺣﺪ ﳏﺪﺩﺍﺕ ﺍﻟـ
,jQueryﻭﰲ ﺣﺎﻝ ﺃﻥ ﺍﻟﻌﻨﺼﺮ ﻻ ﳛﺘﻮﻱ ﻋﻠﻰ ﺍﻟﺼﻔﺔ ﺍﶈﺪﺩﺓ ﺑﺎﻟﻘﻴﻤﺔ nameﻋﻨﺪﻫﺎ ﻳﺘﻢ ﺇﺭﺟﺎﻉ ﺍﻟﻘﻴﻤﺔ
,undefinedﻭﻣﻦ ﻫﺬﻩ ﺍﻟﺼﻔﺎﺕ title, alt, src, href, width, styleﻭﻏﲑﻫﺎ ﺃﺧﺮﻯ ﻛﻤﺎ ﳝﻜﻦ
66 ﲨﻴﻊ ﺍﳊﻘﻮﻕ ﺗﺘﺒﻊ ﳊﻘﻮﻕ ﻣﻜﺘﺒﺔ jQuery
ﻼ ﳝﻜﻦ ﺍﳊﺼﻮﻝ ﻋﻠﻰ ﻗﻴﻤﺔ ﺍﻟﺼﻔﺔ NewsIdﻣﻊ
ﺍﳊﺼﻮﻝ ﻋﻠﻰ ﻗﻴﻤﺔ ﺻﻔﺔ ﻏﲑ ﻣﻮﺟﻮﺩﺓ ﰲ ﺍﻟـ HTMLﻣﺜ ﹰ
ﺍﻟﻌﻠﻢ ﺃﻥ ﻫﺬﻩ ﺍﻟﺼﻔﺔ ﻏﲑ ﻣﻮﺟﻮﺩﺓ ﰲ ﺍﻟﺼﻔﺎﺕ ﺍﻟﻘﻴﺎﺳﻴﺔ ﻷﻱ ﻭﺍﲰﺔ ,HTMLﻭﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﻌﺮﺽ ﻗﻴﻤﺔ ﺍﻟﺼﻔﺔ
titleﻟﻠﻮﺍﲰﺔ ) (tagﺍﻟﱵ ﺍﲰﻬﺎ emﻭﻳﻌﺮﺿﻪ ﺑﺎﻟﻠﻮﻥ ﺍﻷﲪﺮ:
)attr(properties
ﻳﺴﺘﺨﺪﻡ ﻹﺳﻨﺎﺩ ﻗﻴﻢ ﻟﺼﻔﺎﺕ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﻳﺴﺒﻖ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﺎﺑﻊ
attrﺣﻴﺚ ﻳﻌﺘﻤﺪ ﻃﺮﻳﻘﺔ ﻣﻔﺘﺎﺡ/ﻗﻴﻤﺔ ﻟﺘﺤﺪﻳﺪ ﺍﻟﺼﻔﺔ ﻭﻗﻴﻤﺘﻬﺎ ﺣﻴﺚ ﺗﺄﺧﺬ ﺍﻟﺸﻜﻞ ﺍﻟﺘﺎﱄ:
ﻣﻊ ﻣﻼﺣﻈﺔ ﺃﻧﻪ ﻟﺘﺤﺪﻳﺪ ﻗﻴﻤﺔ ﺍﻟﻜﻼﺱ CSSﻟﻠﻌﻨﺎﺻﺮ ﺍﳌﻄﺎﺑﻘﺔ ﻓﻴﺠﺐ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺼﻔﺔ classNameﻛﻤﻔﺘﺎﺡ ﺃﻭ
ﺍﺳﺘﺨﺪﻡ ﺍﻟﺘﺎﺑﻊ ) .addClass(classﺃﻭ ﺍﻟﺘﺎﺑﻊ ) .removeClass(classﻣﻊ ﺍﻻﻧﺘﺒﺎﻩ ﺇﱃ ﺃﻧﻪ ﰲ ﺣﺎﻝ ﺍﺳﺘﺨﺪﺍﻡ
ﺗﺎﺑﻊ ﻣﻜﺎﻥ ﺍﻟﻘﻴﻤﺔ valueﻋﻨﺪﻫﺎ ﺳﻴﺘﻢ ﺗﻨﻔﻴﺬ ﺍﻟﺘﺎﺑﻊ ﻭﻟﻦ ﻳﺘﻢ ﺇﺳﻨﺎﺩﻩ ﻛﻘﻴﻤﺔ ﻟﻠﻤﻔﺘﺎﺡ )ﺍﻟﺼﻔﺔ( ,ﻭﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﳛﺪﺩ
ﺑﻌﺾ ﺻﻔﺎﺕ ﲨﻴﻊ ﺍﻟﻮﺍﲰﺎﺕ imgﰲ ﺍﻟﺼﻔﺤﺔ:
)text(val
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﺘﻐﻴﲑ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻨﺼﻴﺔ ﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﻣﻊ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ
ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ,ﻭﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﻐﲑ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻨﺼﻴﺔ ﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ pﺍﳌﻮﺟﻮﺩﺓ ﰲ ﺍﻟﺼﻔﺤﺔ:
ﺃﻣﺎ ﻣﻦ ﺃﺟﻞ ﺍﻟﻌﻨﺼﺮ radioﻓﻴﺠﺐ ﺃﻳﻀﹰﺎ ﺍﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ :checkedﻛﻤﺎ ﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ:
ﺃﻣﺎ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻓﻴﻌﻴﺪ ﻗﻴﻤﺔ ﻭﺍﺣﺪﺓ ﻓﻘﻂ ﻣﻦ ﺍﻟﻌﻨﺼﺮ selectﺍﻟﺬﻱ ﻳﺴﻤﺢ ﺑﺘﺤﺪﻳﺪ ﻋﻨﺼﺮ ﻭﺍﺣﺪ ﻓﻘﻂ ﻭﻣﺼﻔﻮﻓﺔ ﻗﻴﻢ
ﻣﻦ ﺍﻟﻌﻨﺼﺮ selectﺍﻟﺬﻱ ﻳﺴﻤﺢ ﺑﺎﺧﺘﻴﺎﺭﺍﺕ ﻣﺘﻌﺪﺩﺓ:
)val(val
ﳜﺘﻠﻒ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻋﻦ ﺍﻟﺘﺎﺑﻊ ﺍﻟﺴﺎﺑﻖ ﰲ ﺃﻧﻪ ﻳﺴﺘﺨﺪﻡ ﻟﻠﻌﻨﺎﺻﺮ select, checkbox, radioﺣﻴﺚ
ﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻪ ﻟﺘﺤﺪﻳﺪ ﻗﻴﻤﺔ ﻭﺍﺣﺪﺓ ﻟﻠﻌﻨﺼﺮ selectﺃﻭ ﺃﻛﺜﺮ ﻣﻦ ﻗﻴﻤﺔ ,ﻭﺍﺧﺘﻴﺎﺭ ﻋﻨﺼﺮ checkboxﻭﺍﺣﺪ ﺃﻭ
ﺃﻛﺜﺮ ,ﻛﻤﺎ ﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻪ ﻟﺘﺤﺪﻳﺪ ﻋﻨﺼﺮ radioﻛﻤﺎ ﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ:
84 ﲨﻴﻊ ﺍﳊﻘﻮﻕ ﺗﺘﺒﻊ ﳊﻘﻮﻕ ﻣﻜﺘﺒﺔ jQuery
ﺃﻣﺎ ﺍﻟﺸﻴﻔﺮﺓ ﺍﻟﻜﺎﻣﻠﺔ ﻟﻠﻤﺜﺎﻝ ﺍﻟﺴﺒﻖ ﻓﻬﻲ:
)filter(fn
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻻﺳﺘﺒﻌﺎﺩ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﻣﻦ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﻣﻊ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ
ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻭﺍﻟﱵ ﻻ ﲢﻘﻖ ﺍﻟﺘﺎﺑﻊ fnﺣﻴﺚ ﻳﺘﻢ ﺍﺳﺘﺒﻌﺎﺩ ﺍﻟﻌﻨﺼﺮ ﰲ ﺣﺎﻝ ﺃﻥ ﻋﻤﻠﻴﺔ ﺗﻘﻴﻴﻢ ﺍﻟﺘﺎﺑﻊ fnﺃﻋﺎﺩﺓ ,falseﻭﺍﳌﺜﺎﻝ
ﺍﻟﺘﺎﱄ ﻳﻀﻊ ﺇﻃﺎﺭ ﺃﲪﺮ ﺣﻮﻝ ﺍﻟﻌﻨﺼﺮ divﺍﻟﺜﺎﱐ ﺍﳌﻮﺟﻮﺩ ﰲ ﺍﻟﺼﻔﺤﺔ ﺃﻱ ﺗﺮﺗﻴﺒﻪ ﻳﺴﺎﻭﻱ ﺍﻟﻘﻴﻤﺔ 1ﺃﻭ ﺍﻟﻌﻨﺼﺮ div
ﺍﻟﺬﻱ ﻗﻴﻤﺔ ﺍﻟﺼﻔﺔ idﻟﻪ ﺗﺴﺎﻭﻱ :fourth
90 ﲨﻴﻊ ﺍﳊﻘﻮﻕ ﺗﺘﺒﻊ ﳊﻘﻮﻕ ﻣﻜﺘﺒﺔ jQuery
ﺃﻣﺎ ﺍﻟﺸﻴﻔﺮﺓ ﺍﻟﻜﺎﻣﻠﺔ ﻟﻠﻤﺜﺎﻝ ﺍﻟﺴﺎﺑﻖ ﻓﻬﻲ:
• ﺍﶈﺪﺩ :first-childﻳﻔﺤﺺ ﻫﻞ ﺍﻟﻌﻨﺼﺮ divﺍﻟﺬﻱ ﰎ ﺍﻟﻀﻐﻂ ﻋﻠﻴﻪ ﺑﺎﻟﻔﺄﺭﺓ ﻫﻮ ﺃﻭﻝ ﻋﻨﺼﺮ ﰲ ﺍﻟﺼﻔﺤﺔ
ﺑﻌﺪ ﺍﻟﻮﺍﲰﺔ bodyﺃﻡ ﻻ.
• ﺍﶈﺪﺩﻳﻦ :.red, .blueﻫﺬﻳﻦ ﺍﶈﺪﺩﻳﻦ ﳘﺎ ﻣﻦ ﺍﶈﺪﺩ .classﺣﻴﺚ ﻳﺘﻢ ﻓﺤﺺ ﻫﻞ ﺍﻟﻌﻨﺼﺮ divﳛﺘﻮﻱ
ﻋﻠﻰ ﺃﺣﺪ ﻫﺬﻳﻦ ﺍﻟﻜﻼﺳﲔ CSS classesﺃﻡ ﻻ.
• ﺍﶈﺪﺩ )' :contains('Peterﻳﻔﺤﺺ ﻫﻞ ﺍﻟﻌﻨﺼﺮ divﳛﺘﻮﻱ ﻋﻠﻰ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻨﺼﻴﺔ Peterﺃﻡ ﻻ.
• ﺍﺳﺘﺜﻨﺎﺀ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ pﺍﳌﻮﺟﻮﺩﺓ ﺩﺍﺧﻞ ﻋﻨﺼﺮ divﻭﳛﺘﻮﻱ ﻋﻠﻰ ﺍﻟﻜﻼﺱ :selected
ﻓﻔﻲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﻭﺿﻊ ﺇﻃﺎﺭ ﺃﲪﺮ ﺣﻮﻝ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ divﺍﳌﻮﺟﻮﺩﺓ ﰲ ﺍﻟﺼﻔﺤﺔ ﻣﺎﻋﺪﺍ ﺍﻟﻌﻨﺎﺻﺮ divﺍﻟﱵ ﲢﺘﻮﻱ
ﻋﻠﻰ ﺍﻟﻜﻼﺱ greenﺃﻭ ﺍﻟﱵ ﺗﻜﻮﻥ ﻗﻴﻤﺔ ﺍﻟﻮﺍﺻﻔﺔ idﳍﺎ ﻣﺴﺎﻭﻱ ﺍﻟﻘﻴﻤﺔ :blueone
)]parent([expr
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﳌﻄﺎﺑﻘﺔ ﳎﻤﻮﻋﺔ ﻣﻦ ﺍﻟﻌﻨﺎﺻﺮ ﲢﺘﻮﻱ ﻋﻠﻰ ﺍﻵﺑﺎﺀ ﺍﳌﺒﺎﺷﺮﻳﻦ ﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ
ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ ,ﻭﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﻌﺒﲑ ﺍﻻﺧﺘﻴﺎﺭﻱ exprﻟﺘﺮﺷﻴﺢ ﺍﻟﻌﻨﺎﺻﺮ
ﺍﻵﺑﺎﺀ ﺍﻟﱵ ﳝﻜﻦ ﻣﻄﺎﺑﻘﺘﻬﺎ ,ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﻋﺮﺽ ﺍﺳﻢ ﺍﻟﻌﻨﺼﺮ ﺍﻷﺏ ﲜﺎﻧﺐ ﻛﻞ ﻋﻨﺼﺮ ﻣﻦ ﻋﻨﺎﺻﺮ ﺍﻟﺼﻔﺤﺔ:
)]siblings([expr
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﳌﻄﺎﺑﻘﺔ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﻋﻠﻰ ﻧﻔﺲ ﺍﳌﺴﺘﻮﻯ ﺍﻟﺴﺎﺑﻘﺔ ﺃﻭ ﺍﻟﻼﺣﻘﺔ ﻟﻠﻌﻨﺼﺮ ﺍﳊﺎﱄ ﻭﳝﻜﻦ
ﲢﺪﻳﺪ ﺷﺮﻭﻁ ﺍﳌﻄﺎﺑﻘﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﻌﺒﲑ ﺍﻻﺧﺘﻴﺎﺭﻱ ,exprﻭﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﻐﲑ ﻟﻮﻥ ﺧﻂ ﻛﻞ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﺗﺄﰐ ﻗﺒﻞ
ﻭﺑﻌﺪ ﺍﻟﻌﻨﺎﺻﺮ ﺍﶈﺪﺩﺓ ﺑﺎﻟﻜﻼﺱ :hilite
ﻣﻼﺣﻈﺔ :ﺍﻟﺸﺮﺡ ﺍﳌﻮﺟﻮﺩ ﰲ ﺍﻟﺼﻔﺤﺔ ﻣﻮﻗﻊ jQueryﺍﻟﺮﲰﻲ ﺍﳋﺎﺹ ﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻏﲑ ﺩﻗﻴﻖ ,ﻭﺍﻟﺮﺍﺑﻂ ﺍﻟﺘﺎﱄ ﻫﻮ
ﺍﻟﺸﺮﺡ ﺣﻮﻝ :insertAfter
http://docs.jquery.com/Manipulation/insertAfter#content
ﻣﻼﺣﻈﺔ :ﺍﻟﺸﺮﺡ ﺍﳌﻮﺟﻮﺩ ﰲ ﺍﻟﺼﻔﺤﺔ ﻣﻮﻗﻊ jQueryﺍﻟﺮﲰﻲ ﺍﳋﺎﺹ ﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻏﲑ ﺩﻗﻴﻖ ,ﻭﺍﻟﺮﺍﺑﻂ ﺍﻟﺘﺎﱄ ﻫﻮ
ﺍﻟﺸﺮﺡ ﺣﻮﻝ :insertBefore
http://docs.jquery.com/Manipulation/insertBefore#content
ﺃﻣﺎ ﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻓﻴﺘﻢ ﺣﺬﻑ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ pﺍﳌﻮﺟﻮﺩﺓ ﰲ ﺍﻟﺼﻔﺤﺔ ﻋﻨﺪ ﺍﻟﻀﻐﻂ ﻋﻠﻰ ﺍﻟﺰﺭ:
)clone(bool
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﻨﺴﺦ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﻣﻊ ﺍﻷﺣﺪﺍﺙ ﺍﳌﺘﺼﻠﺔ ﺎ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ
ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ ﻭﻳﻌﻴﺪ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﳉﺪﻳﺪﺓ ﻭﺍﻟﻮﺳﻴﻂ boolﻳﺄﺧﺬ ﺍﻟﻘﻴﻤﺔ trueﻟﻠﺴﻤﺎﺡ ﺑﻨﺴﺦ
ﺍﻷﺣﺪﺍﺙ ﺃﻳﻀﹰﺎ ﺃﻭ falseﻟﻌﺪﻡ ﻧﺴﺦ ﺍﻷﺣﺪﺍﺙ ,ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﻧﺴﺦ ﺍﻟﺰﺭ ﻭﺇﺩﺭﺍﺟﻪ ﺑﻌﺪ ﺍﻟﺰﺭ ﺍﳊﺎﱄ:
CSS
)css(name
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻨﺼﻴﺔ ﳋﺎﺻﻴﺔ ﳕﻂ style propertyﻣﻦ ﺃﻭﻝ ﻋﻨﺼﺮ ﻣﻦ
ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ ﻭﺫﻟﻚ ﺑﺘﺤﺪﻳﺪ ﺍﺳﻢ ﺍﳋﺎﺻﻴﺔ ﺑﺎﻟﻮﺳﻴﻂ
,nameﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺍﳊﺼﻮﻝ ﻋﻠﻰ ﻗﻴﻤﺔ ﺍﳋﺎﺻﻴﺔ background-colorﻷﻱ ﻋﻨﺼﺮ divﻣﻮﺟﻮﺩ ﰲ
ﺍﻟﺼﻔﺤﺔ ﻭﺫﻟﻚ ﻋﻨﺪ ﺍﻟﻀﻐﻂ ﻋﻠﻴﻪ ﺑﺎﻟﻔﺄﺭﺓ:
ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺗﻐﻴﲑ ﻟﻮﻥ ﺍﳋﻠﻔﻴﺔ ﻭﲰﺎﻛﺔ ﺍﳋﻂ ﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ pﺍﳌﻮﺟﻮﺩﺓ ﰲ ﺍﻟﺼﻔﺤﺔ ﻋﻨﺪ ﻭﺿﻊ ﻣﺆﺷﺮ ﺍﻟﻔﺄﺭﺓ
ﻓﻮﻗﻬﺎ ﻭﺗﻐﻴﲑﻩ ﻣﺮﺓ ﺃﺧﺮﻯ ﻋﻨﺪ ﺇﺯﺍﻟﺔ ﻣﺆﺷﺮ ﺍﻟﻔﺄﺭﺓ ﻣﻦ ﻓﻮﻗﻪ:
)(position
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ ﻗﻴﻤﺔ topﻭ leftﻟﻠﻌﻨﺼﺮ ﺍﶈﺪﺩ ﻧﺴﺒﺔ ﺇﱃ ﺇﺣﺪﺍﺛﻴﺎﺕ ﺍﻟﻌﻨﺼﺮ ﺍﻷﺏ
ﻟﻠﻌﻨﺼﺮ ,ﺍﻟﻘﻴﻤﺔ ﺍﻟﱵ ﻳﻌﻴﺪﻫﺎ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻫﻲ ﻛﺎﺋﻦ ﳛﺘﻮﻱ ﻋﻠﻰ ﻗﻴﻤﺘﲔ ﻋﺪﺩﻳﲔ ﺻﺤﻴﺤﲔ ,ﻭﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻣﻊ
ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﺗﻈﻬﺮ ﻋﻠﻰ ﺍﻟﺼﻔﺤﺔ ﻓﻘﻂ ,ﻓﻔﻲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﻱ ﻳﺘﻢ ﻋﺮﺽ ﻗﻴﻢ ﻣﻮﻗﻊ ﺃﻭﻝ ﻋﻨﺼﺮ pﰲ ﺍﻟﺼﻔﺤﺔ:
)(width
ﻳﻌﻴﺪ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻋﺮﺽ ﺃﻭﻝ ﻋﻨﺼﺮ ﻳﺘﻢ ﲢﺪﻳﺪﻩ ﺑﺄﺣﺪ ﺗﻮﺍﺑﻊ ﺍﻟﺘﺤﺪﻳﺪ ﻭﻫﺬﻩ ﺍﻟﻘﻴﻤﺔ ﺗﻌﱪ ﻋﻦ ﻋﺪﺩ ﺻﺤﻴﺢ
ﻭﻭﺣﺪﺓ ﺍﻟﻘﻴﺎﺱ ﺍﳌﺴﺘﺨﺪﻣﺔ ﻫﻲ ﺍﻟﺒﻴﻜﺴﻞ ,ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﻮﺟﺪ ﺛﻼﺛﺔ ﺃﺯﺍﺭ ﻟﻄﺒﺎﻋﺔ ﻋﺮﺽ ﺍﻟﻌﻨﺼﺮ pﻭﺍﻟﻮﺛﻴﻘﺔ
documentﻭﺍﻟﻨﺎﻓﺬﺓ:
154 ﲨﻴﻊ ﺍﳊﻘﻮﻕ ﺗﺘﺒﻊ ﳊﻘﻮﻕ ﻣﻜﺘﺒﺔ jQuery
ﺃﻣﺎ ﺍﻟﺸﻴﻔﺮﺓ ﺍﻟﻜﺎﻣﻠﺔ ﻟﻠﻤﺜﺎﻝ ﺍﻟﺴﺎﺑﻖ ﻓﻬﻲ:
)(innerHeight
ﻳﻌﻴﺪ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻋﺪﺩ ﺻﺤﻴﺢ ﻳﻌﱪ ﻋﻦ ﻗﻴﻤﺔ ﺍﻻﺭﺗﻔﺎﻉ ﺍﻟﺪﺍﺧﻠﻲ ﻷﻭﻝ ﻋﻨﺼﺮ ﻳﺘﻢ ﲢﺪﻳﺪﻩ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺃﺣﺪ ﺗﻮﺍﺑﻊ
ﺍﻟﺘﺤﺪﻳﺪ ﻭﻳﺴﺘﺜﲏ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﺍﻹﻃﺎﺭ Borderﻋﻨﺪ ﺣﺴﺎﺏ ﺍﻻﺭﺗﻔﺎﻉ ﺍﻟﺪﺍﺧﻠﻲ ﻟﻠﻌﻨﺼﺮ ,ﻭﻳﻌﻤﻞ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻣﻊ
)(innerWidth
ﻳﻌﻴﺪ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻋﺪﺩ ﺻﺤﻴﺢ ﻳﻌﱪ ﻋﻦ ﻗﻴﻤﺔ ﺍﻟﻌﺮﺽ ﺍﻟﺪﺍﺧﻠﻲ ﻷﻭﻝ ﻋﻨﺼﺮ ﻳﺘﻢ ﲢﺪﻳﺪﻩ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺃﺣﺪ ﺗﻮﺍﺑﻊ
ﺍﻟﺘﺤﺪﻳﺪ ﻭﻳﺴﺘﺜﲏ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﺍﻹﻃﺎﺭ Borderﻋﻨﺪ ﺣﺴﺎﺏ ﺍﻟﻌﺮﺽ ﺍﻟﺪﺍﺧﻠﻲ ﻟﻠﻌﻨﺼﺮ ,ﻭﻳﻌﻤﻞ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻣﻊ ﺍﻟﻌﻨﺎﺻﺮ
ﺍﻟﻈﺎﻫﺮﺓ ﻭﺍﻟﻌﻨﺎﺻﺮ ﺍﳌﺨﻔﻴﺔ ﰲ ﺍﻟﺼﻔﺤﺔ ,ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﻋﺮﺽ ﻗﻴﻤﺔ ﺍﻟﻌﺮﺽ ﺍﻟﺪﺍﺧﻠﻲ ﻷﻭﻝ ﻋﻨﺼﺮ pﻣﻮﺟﻮﺩ ﰲ
ﺍﻟﺼﻔﺤﺔ:
)outerHeight(margin
ﻳﻌﻴﺪ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻋﺪﺩ ﺻﺤﻴﺢ ﻳﻌﱪ ﻋﻦ ﻗﻴﻤﺔ ﺍﻻﺭﺗﻔﺎﻉ ﺍﳋﺎﺭﺟﻲ ﻷﻭﻝ ﻋﻨﺼﺮ ﻳﺘﻢ ﲢﺪﻳﺪﻩ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺃﺣﺪ ﺗﻮﺍﺑﻊ
ﺍﻟﺘﺤﺪﻳﺪ ﻭﻳﺘﻤﻀﻦ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﺍﻹﻃﺎﺭ Borderﻋﻨﺪ ﺣﺴﺎﺏ ﺍﻻﺭﺗﻔﺎﻉ ﺍﳋﺎﺭﺟﻲ ﻟﻠﻌﻨﺼﺮ ,ﻭﻳﻌﻤﻞ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻣﻊ
ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﻈﺎﻫﺮﺓ ﻭﺍﻟﻌﻨﺎﺻﺮ ﺍﳌﺨﻔﻴﺔ ﰲ ﺍﻟﺼﻔﺤﺔ ,ﺃﻣﺎ ﺍﻟﻮﺳﻴﻂ ﺍﻻﺧﺘﻴﺎﺭﻱ marginﻓﻌﻨﺪ ﲢﺪﻳﺪ ﻗﻴﻤﺔ trueﻋﻨﺪﻫﺎ ﻳﺘﻢ
ﺇﺩﺧﺎﻝ ﻫﻮﺍﻣﺶ ﺍﻟﻌﻨﺼﺮ ﰲ ﻋﻤﻠﻴﺔ ﺣﺴﺎﺏ ﺍﻻﺭﺗﻔﺎﻉ ﺍﳋﺎﺭﺟﻲ ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﻋﺮﺽ ﻗﻴﻤﺔ ﺍﻟﻌﺮﺽ ﺍﳋﺎﺭﺟﻲ ﻷﻭﻝ
ﻋﻨﺼﺮ pﻣﻮﺟﻮﺩ ﰲ ﺍﻟﺼﻔﺤﺔ:
)outerWidth(margin
ﻳﻌﻴﺪ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻋﺪﺩ ﺻﺤﻴﺢ ﻳﻌﱪ ﻋﻦ ﻗﻴﻤﺔ ﺍﻟﻌﺮﺽ ﺍﳋﺎﺭﺟﻲ ﻷﻭﻝ ﻋﻨﺼﺮ ﻳﺘﻢ ﲢﺪﻳﺪﻩ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺃﺣﺪ ﺗﻮﺍﺑﻊ
ﺍﻟﺘﺤﺪﻳﺪ ﻭﻳﺘﻤﻀﻦ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﺍﻹﻃﺎﺭ Borderﻋﻨﺪ ﺣﺴﺎﺏ ﺍﻟﻌﺮﺽ ﺍﳋﺎﺭﺟﻲ ﻟﻠﻌﻨﺼﺮ ,ﻭﻳﻌﻤﻞ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻣﻊ
ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﻈﺎﻫﺮﺓ ﻭﺍﻟﻌﻨﺎﺻﺮ ﺍﳌﺨﻔﻴﺔ ﰲ ﺍﻟﺼﻔﺤﺔ ,ﺃﻣﺎ ﺍﻟﻮﺳﻴﻂ ﺍﻻﺧﺘﻴﺎﺭﻱ marginﻓﻌﻨﺪ ﲢﺪﻳﺪ ﻗﻴﻤﺔ trueﻋﻨﺪﻫﺎ ﻳﺘﻢ
ﺇﺩﺧﺎﻝ ﻫﻮﺍﻣﺶ ﺍﻟﻌﻨﺼﺮ ﰲ ﻋﻤﻠﻴﺔ ﺣﺴﺎﺏ ﺍﻟﻌﺮﺽ ﺍﳋﺎﺭﺟﻲ ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﻋﺮﺽ ﻗﻴﻤﺔ ﺍﻟﻌﺮﺽ ﺍﳋﺎﺭﺟﻲ ﻷﻭﻝ
ﻋﻨﺼﺮ pﻣﻮﺟﻮﺩ ﰲ ﺍﻟﺼﻔﺤﺔ:
ﻣﻼﺣﻈﺔ :ﳚﺐ ﺍﻟﺘﺄﻛﺪ ﻣﻦ ﺃﻥ ﲨﻴﻊ ﻋﻨﺎﺻﺮ ﺍﻟـ CSSﻳﺘﻢ ﺗﻀﻤﻴﻨﻬﺎ ﰲ ﺍﻟﺼﻔﺤﺔ ﻗﺒﻞ ﺍﺳﺘﺪﻋﺎﺀ ﺗﻮﺍﺑﻊ ﺍﻟـ jQuery
ﻟﺘﻀﻤﻦ ﺑﺄﻥ ﲨﻴﻊ ﺧﺼﺎﺋﺺ ﺍﻟﻌﻨﺎﺻﺮ ﰎ ﺗﻌﺮﻳﻔﻬﺎ ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﻗﺒﻞ ﺍﻟﺒﺪﺀ ﺑﺘﻨﻔﻴﺬ ﺷﻴﻔﺮﺓ jQueryﻭﺇﻻ ﺳﺘﻈﻬﺮ
ﻣﺸﺎﻛﻞ ﻣﺘﻌﺪﺩﺓ ﻧﺘﻴﺠﺔ ﻟﺬﻟﻚ ,ﻭﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﻄﺒﻊ ﺭﺳﺎﻟﺔ ﻋﻨﺪﻣﺎ ﺗﺼﺒﺢ ﻋﻨﺎﺻﺮ ﺍﻟﻮﺛﻴﻘﺔ ﺟﺎﻫﺰﺓ ﻟﻠﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ:
ﻭﺍﻟﺘﺎﺑﻊ ﺍﳌﻤﺜﻞ ﺑﺎﻟﻮﺳﻴﻂ fnﻟﻪ ﻭﺳﻴﻂ eﳛﺘﻮﻱ ﻣﻌﻠﻮﻣﺎﺕ ﻋﻦ ﺍﳊﺪﺙ ﻭﺍﻟﻌﻨﺼﺮ ﺍﻟﺬﻱ ﺃﻃﻠﻖ ﺍﳊﺪﺙ ,ﻭﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ
ﻫﺬﺍ ﺍﻟﻜﺎﺋﻦ ﻹﻟﻐﺎﺀ ﺍﻟﻮﻇﻴﻔﺔ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﻟﻠﺤﺪﺙ ﻭﻣﻨﻊ ﺃﻳﻀﹰﺎ ﻋﻤﻠﻴﺔ ﺗﻮﺭﻳﺚ ﺍﳊﺪﺙ ﺃﻭ ﻣﺎ ﻳﺴﻤﻰ ﺑـ Event
,Bubblingﻭﻃﺒﻌﹰﺎ ﻟﺘﻨﻔﻴﺬ ﺫﻟﻚ ﻓﺈﻥ ﺍﻟﺘﺎﺑﻊ fnﳚﺐ ﺃﻥ ﻳﻌﻴﺪ ﺍﻟﻘﻴﻤﺔ ,falseﻭﻃﺒﻌﹰﺎ ﻫﺬﺍ ﺳﻴﻤﻨﻊ ﺍﻟﺘﻮﺍﺑﻊ ﺍﻷﺧﺮﻯ
ﺍﳌﺘﺼﻠﺔ ﺑﻨﻔﺲ ﺍﳊﺪﺙ ﰲ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻵﺑﺎﺀ ﻟﻠﻌﻨﺼﺮ ﺍﳊﺎﱄ ﻣﻦ ﺍﻟﻌﻤﻞ ﻭﻟﻜﻦ ﻻ ﻳﺆﺛﺮ ﻋﻠﻰ ﺍﻟﺘﻮﺍﺑﻊ ﺍﻷﺧﺮﻯ ﰲ ﻧﻔﺲ ﺍﻟﻌﻨﺼﺮ.
ﻭﰲ ﻣﻌﻈﻢ ﺍﳊﺎﻻﺕ ﺗﺴﺘﻄﻴﻊ ﺗﻌﺮﻳﻒ ﺍﻟﺘﺎﺑﻊ fnﻋﻠﻰ ﺃﻧﻪ ﺗﺎﺑﻊ ﳎﻬﻮﻝ ﺃﻭ ﻣﺎ ﻳﺴﻤﻰ anonymous functionﻭﰲ
ﺣﺎﻝ ﻋﺪﻡ ﻣﻘﺪﺭﺗﻚ ﻋﻠﻰ ﺫﻟﻚ ﳝﻜﻦ ﲤﺮﻳﺮ ﻣﻌﻠﻮﻣﺎﺕ ﺇﺿﺎﻓﻴﺔ ﺗﺘﻤﺜﻞ ﺑﺎﻟﻮﺳﻴﻂ ﺍﻻﺧﺘﻴﺎﺭﻱ ﺍﻟﺜﺎﱐ .data
ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﻈﻬﺮ ﻃﺮﻳﻘﺔ ﺭﺑﻂ ﺍﳊﺪﺙ clickﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ pﺑﺘﺎﺑﻊ ﻳﻈﻬﺮ ﺭﺳﺎﻟﺔ ﲢﺘﻮﻱ ﻋﻠﻰ ﻧﺺ ﺍﻟﻌﻨﺼﺮ :p
ﺃﻣﺎ ﺍﳌﺜﺎﻝ ﺍﻟﺜﺎﱐ ﻓﻬﻮ ﻳﻈﻬﺮ ﻃﺮﻳﻘﺔ ﲤﺮﻳﺮ ﻣﻌﻠﻮﻣﺎﺕ ﺇﺿﺎﻓﻴﺔ ﻟﻠﺘﺎﺑﻊ :fn
ﺍﳌﺜﺎﻝ ﺍﻟﺜﺎﻟﺚ ﻳﻈﻬﺮ ﻃﺮﻳﻘﺔ ﻣﻨﻊ ﺍﳊﺪﺙ submitﰲ ﺍﻟﻨﻤﻮﺫﺝ formﻣﻦ ﺍﻟﻌﻤﻞ ﻭﻣﻨﻊ ﻋﻤﻠﻴﺔ ﺗﻮﺭﻳﺚ ﺍﳊﺪﺙ ﺇﱃ
ﺍﻟﻌﻨﺎﺻﺮ ﺍﻵﺑﺎﺀ ﻭﺫﻟﻚ ﺑﺈﻋﺎﺩﺓ ﺍﻟﻘﻴﻤﺔ :false
ﺃﻣﺎ ﺍﳌﺜﺎﻝ ﺍﻟﺮﺍﺑﻊ ﻓﻴﻈﻬﺮ ﻛﻴﻒ ﳝﻜﻦ ﻣﻨﻊ ﻋﻤﻞ ﺍﳊﺪﺙ ﺍﻻﻓﺘﺮﺍﺿﻲ ﻓﻘﻂ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﺎﺑﻊ )(:preventDefault
ﺃﻣﺎ ﺍﳌﺜﺎﻝ ﺍﻷﺧﲑ ﻓﻴﻈﻬﺮ ﻛﻴﻔﻴﺔ ﻣﻨﻊ ﺗﻮﺭﻳﺚ ﺍﳊﺪﺙ ﺇﱃ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻵﺑﺎﺀ ﻟﻠﻌﻨﺼﺮ ﺍﳊﺎﱄ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﺎﺑﻊ
:stopPropagation
163 ﲨﻴﻊ ﺍﳊﻘﻮﻕ ﺗﺘﺒﻊ ﳊﻘﻮﻕ ﻣﻜﺘﺒﺔ jQuery
ﻭﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﻈﻬﺮ ﻛﻴﻔﻴﺔ ﺭﺑﻂ ﺍﻟﺘﺎﺑﻊ fnﲝﺪﺙ ﳐﺼﺺ ﻏﲑ ﻣﻮﺟﻮﺩ ﺍﲰﻪ myCustomEventﺯﻳﻨﻄﻠﻖ ﻫﺬﺍ
ﺍﳊﺪﺙ ﻋﻨﺪ ﺍﻟﻀﻐﻂ ﻋﻠﻰ ﺍﻟﺰﺭ:
ﻭﺍﻟﺘﺎﺑﻊ ﺍﳌﻤﺜﻞ ﺑﺎﻟﻮﺳﻴﻂ fnﻟﻪ ﻭﺳﻴﻂ eﳛﺘﻮﻱ ﻣﻌﻠﻮﻣﺎﺕ ﻋﻦ ﺍﳊﺪﺙ ﻭﺍﻟﻌﻨﺼﺮ ﺍﻟﺬﻱ ﺃﻃﻠﻖ ﺍﳊﺪﺙ ,ﻭﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ
ﻫﺬﺍ ﺍﻟﻜﺎﺋﻦ ﻹﻟﻐﺎﺀ ﺍﻟﻮﻇﻴﻔﺔ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﻟﻠﺤﺪﺙ ﻭﻣﻨﻊ ﺃﻳﻀﹰﺎ ﻋﻤﻠﻴﺔ ﺗﻮﺭﻳﺚ ﺍﳊﺪﺙ ﺃﻭ ﻣﺎ ﻳﺴﻤﻰ ﺑـ Event
,Bubblingﻭﻃﺒﻌﹰﺎ ﻟﺘﻨﻔﻴﺬ ﺫﻟﻚ ﻓﺈﻥ ﺍﻟﺘﺎﺑﻊ fnﳚﺐ ﺃﻥ ﻳﻌﻴﺪ ﺍﻟﻘﻴﻤﺔ ,falseﻭﻃﺒﻌﹰﺎ ﻫﺬﺍ ﺳﻴﻤﻨﻊ ﺍﻟﺘﻮﺍﺑﻊ ﺍﻷﺧﺮﻯ
ﺍﳌﺘﺼﻠﺔ ﺑﻨﻔﺲ ﺍﳊﺪﺙ ﰲ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻵﺑﺎﺀ ﻟﻠﻌﻨﺼﺮ ﺍﳊﺎﱄ ﻣﻦ ﺍﻟﻌﻤﻞ ﻭﻟﻜﻦ ﻻ ﻳﺆﺛﺮ ﻋﻠﻰ ﺍﻟﺘﻮﺍﺑﻊ ﺍﻷﺧﺮﻯ ﰲ ﻧﻔﺲ ﺍﻟﻌﻨﺼﺮ.
ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺭﺑﻂ ﺗﺎﺑﻊ ﻣﻊ ﺍﳊﺪﺙ clickﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ divﺍﳌﻮﺟﻮﺩﺓ ﰲ ﺍﻟﺼﻔﺤﺔ:
ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺮﺳﻞ ﻣﻌﻠﻮﻣﺎﺕ ﺃﻭﻝ ﳕﻮﺫﺝ ﰲ ﺍﻟﺼﻔﺤﺔ ﺇﱃ ﺍﳋﺎﺩﻡ ﺑﺪﻭﻥ ﺍﻟﻀﻐﻂ ﻋﻠﻰ ﺯﺭ :submit
ﺃﻣﺎ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻓﻴﻈﻬﺮ ﻛﻴﻔﻴﺔ ﺇﺭﺳﺎﻝ ﻣﻌﻠﻮﻣﺎﺕ ﺍﻟﻨﻤﻮﺫﺝ ﺍﻷﻭﻝ ﰲ ﺍﻟﺼﻔﺤﺔ ﺇﱃ ﺍﳋﺎﺩﻡ ﺑﺘﻤﺮﻳﺮ ﻛﺎﺋﻦ ﻣﻦ ﺍﻟﻨﻮﻉ
jQuery.Eventﺑﺪ ﹰﻻ ﻣﻦ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻨﺼﻴﺔ :submit
ﺃﻣﺎ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻓﻴﻈﻬﺮ ﻛﻴﻔﻴﺔ ﲤﺮﻳﺮ ﺑﻴﺎﻧﺎﺕ ﻋﻨﺪ ﻗﺪﺡ ﺍﳊﺪﺙ clickﻷﻱ ﻋﻨﺼﺮ pﻣﻮﺟﻮﺩ ﰲ ﺍﻟﺼﻔﺤﺔ:
ﻭﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﻈﻬﺮ ﻛﻴﻔﻴﺔ ﲤﺮﻳﺮ ﺑﻴﺎﻧﺎﺕ ﻋﻨﺪ ﻗﺪﺡ ﺍﳊﺪﺙ loggedﻟﻠﻌﻨﺼﺮ bodyﻭﻟﻜﻦ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻜﺎﺋﻦ
:jQuery.Event
ﻭﻫﺬﻩ ﻃﺮﻳﻘﺔ ﺃﺧﺮﻯ ﻟﺘﻤﺮﻳﺮ ﺑﻴﺎﻧﺎﺕ ﻋﻨﺪ ﻗﺪﺡ ﺍﳊﺪﺙ loggedﻟﻠﻌﻨﺼﺮ bodyﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻜﺎﺋﻦ
:jQuery.Event
• ﺍﻷﻭﻝ ﻫﻮ ﺃﻥ ﺍﻟﻮﻇﻴﻔﺔ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﻟﻠﺤﺪﺙ ﺍﳌﺪﻋﻮﻣﺔ ﻣﻦ ﻗﺒﻞ ﺍﳌﺘﺼﻔﺢ ﻻ ﺗﻌﻤﻞ ﻭﻻ ﻳﺘﻢ ﺗﻮﺭﻳﺚ ﺍﳊﺪﺙ ﺇﱃ
ﺍﻟﻌﻨﺎﺻﺮ ﺍﻵﺑﺎﺀ ﻭﺍﻷﺣﺪﺍﺙ Live Eventsﻻ ﻳﺘﻢ ﻗﺪﺣﻬﺎ ﺃﻳﻀﹰﺎ.
• ﻋﻨﺪﻣﺎ ﺗﺴﺘﺨﺪﻡ ﺍﻟﺘﺎﺑﻊ liveﻟﺮﺑﻂ ﺣﺪﺙ ﻋﻨﺪﻫﺎ ﺳﻴﺘﻢ ﺗﻄﺒﻴﻖ ﻋﻤﻠﻴﺔ ﺍﻟﺮﺑﻂ ﻋﻠﻰ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﳊﺎﻟﻴﺔ
ﻭﺍﻟﻌﻨﺎﺻﺮ ﺍﳉﺪﻳﺪﺓ ﰲ ﺍﻟﺼﻔﺤﺔ ,ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﳌﺜﺎﻝ ﻋﻨﺪ ﺭﺑﻂ ﺍﳊﺪﺙ clickﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ liﺍﳊﺎﻟﻴﺔ ﰲ
ﺍﻟﺼﻔﺤﺔ ﻓﺈﻥ ﻋﻤﻠﻴﺔ ﺭﺑﻂ ﺍﳊﺪﺙ clickﺳﺘﺘﺄﺛﺮ ﺎ ﺍﻟﻌﻨﺎﺻﺮ liﺍﻟﱵ ﻳﺘﻢ ﺇﺿﺎﻓﺘﻬﺎ ﺇﱃ ﺍﻟﺼﻔﺤﺔ ,ﻭﻫﺬﻩ ﺍﳊﺎﻟﺔ
ﻏﲑ ﻣﻮﺟﻮﺩﺓ ﻋﻨﺪ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﺎﺑﻊ .bind
• ﺍﻷﺣﺪﺍﺙ ﺍﳌﺒﺎﺷﺮﺓ ﻻ ﻳﺘﻢ ﺗﻮﺭﻳﺜﻬﺎ ﻟﻠﻌﻨﺎﺻﺮ ﺍﻵﺑﺎﺀ ﺑﺎﻟﻄﺮﻳﻘﺔ ﺍﻟﺘﻘﻠﻴﺪﻳﺔ ﻭﻻ ﳝﻜﻦ ﺇﻳﻘﺎﻑ ﻫﺬﻩ ﺍﻷﺣﺪﺍﺙ
ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﺎﺑﻊ stopPropagationﺃﻭ ﺍﻟﺘﺎﺑﻊ ,stopImmediatePropagtionﻓﻌﻠﻰ ﺳﺒﻴﻞ
ﺍﳌﺜﺎﻝ ﻋﻨﺪ ﺭﺑﻂ ﺣﺪﺛﻲ clickﻭﺍﺣﺪ ﻟﻠﻌﻨﺼﺮ liﻭﺍﻵﺧﺮ ﻟﻠﻌﻨﺼﺮ li aﻓﻌﻨﺪ ﺍﻟﻀﻐﻂ ﻋﻠﻰ ﺍﻟﻌﻨﺼﺮ li a
ﲟﺆﺷﺮ ﺍﻟﻔﺄﺭﺓ ﻓﺈﻥ ﺍﳊﺪﺛﲔ ﻋﻠﻰ li aﻭﺍﻟﻌﻨﺼﺮ liﺳﻴﺘﻢ ﻗﺪﺣﻬﻤﺎ ﻷﻧﻪ ﰲ ﺣﺎﻝ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﺎﺑﻊ bindﻟﺮﺑﻂ
ﺍﻷﺣﺪﺍﺙ ﻓﺈﻥ ﺍﳊﺪﺙ ﺍﻟﺬﻱ ﳛﺪﺙ ﺿﻤﻦ ﻋﻨﺼﺮ ﺩﺍﺧﻠﻲ ﻳﺆﺩﻱ ﺇﱃ ﺗﻮﺭﻳﺚ ﺍﳊﺪﺙ ﺇﱃ ﺍﻟﻌﻨﺼﺮ ﺍﻷﺏ ﻛﻤﺎ
ﺣﺪﺙ ﰲ ﻣﺜﺎﻟﻨﺎ ﺍﻟﺴﺎﺑﻖ.
ﻼ )…( $('li a').liveﺳﻴﻌﻤﻞ ﺃﻣﺎ ﺍﺳﺘﺨﺪﺍﻡ
• ﺍﻟﺘﺎﺑﻊ liveﻳﻌﻤﻞ ﻓﻘﻂ ﺑﻌﺪ ﺍﺳﺘﺨﺪﺍﻡ ﺗﻮﺍﺑﻊ ﺍﻟﺘﺤﺪﻳﺪ ,ﻓﻤﺜ ﹰ
ﺍﻟﺘﺎﺑﻊ )…( $('a', someElem).liveﻟﻦ ﻳﻌﻤﻞ ﺃﻳﻀﹰﺎ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻟﻦ ﻳﻌﻤﻞ
)…(.$('a').parent().live
ﻭﻹﺯﺍﻟﺔ ﺍﻟﺮﺑﻂ ﻣﻊ ﺍﻷﺣﺪﺍﺙ ﺍﳌﺒﺎﺷﺮﺓ ﳚﺐ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﺎﺑﻊ ,dieﻭﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﻮﺿﺢ ﻛﻴﻔﻴﺔ ﻋﻤﻞ ﺍﻟﺘﺎﺑﻊ ,liveﺣﻴﺚ
ﺃﻥ ﺍﻟﻌﻨﺼﺮ ﺍﳉﺪﻳﺪ pﺍﻟﺬﻱ ﺗﺘﻢ ﺇﺿﺎﻓﺘﻪ ﻋﻨﺪ ﺍﻟﻀﻐﻂ ﻋﻠﻰ ﺍﻟﻌﻨﺼﺮ pﺍﻷﻭﻝ ﻓﺈﻥ ﺍﳊﺪﺙ clickﺳﻴﻜﻮﻥ ﻓﻌﺎ ﹰﻻ ﻋﻨﺪ
ﺍﻟﻀﻐﻂ ﻋﻠﻴﻪ:
ﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺇﺿﺎﻓﺔ ﺍﻟﻜﻼﺱ hoverﺇﱃ ﺃﻱ ﻋﻨﺼﺮ tdﻳﺘﻢ ﻭﺿﻊ ﻣﺆﺷﺮ ﺍﻟﻔﺄﺭﺓ ﻓﻮﻗﻬﺎ ,ﻭﻋﻨﺪ ﺇﺧﺮﺍﺝ ﻣﺆﺷﺮ
ﺍﻟﻔﺄﺭﺓ ﻣﻦ ﺍﻟﻌﻨﺼﺮ tdﻳﺘﻢ ﺇﺯﺍﻟﺔ ﺍﻟﻜﻼﺱ hoverﻣﻦ ﻫﺬﺍ ﺍﻟﻌﻨﺼﺮ:
ﺃﻣﺎ ﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻓﻴﺘﻢ ﺗﻐﻴﲑ ﺑﻌﺾ ﺧﺼﺎﺋﺺ ﺍﻟﻌﻨﺎﺻﺮ liﻋﻨﺪ ﻭﺿﻊ ﻣﺆﺷﺮ ﺍﻟﻔﺄﺭﺓ ﻓﻮﻗﻬﺎ ﻭﺇﻋﺎﺩﺎ ﺇﱃ ﺣﺎﻟﺘﻬﺎ ﺍﻟﺴﺎﺑﻘﺔ
ﺑﻌﺪ ﺧﺮﻭﺝ ﻣﺆﺷﺮ ﺍﻟﻔﺄﺭﺓ:
)blur(fn
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﺮﺑﻂ ﺍﻟﺘﺎﺑﻊ ﺍﶈﺪﺩ ﺑﺎﻟﻮﺳﻴﻂ fnﺑﺎﳊﺪﺙ blurﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ
ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ ,ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺭﺑﻂ ﺍﳊﺪﺙ blurﻟﻜﻞ ﻋﻨﺎﺻﺮ ﺍﻟـ input
ﻭﻫﻨﺎ ﺗﺘﻤﺜﻞ ﺑﺎﳊﻘﻠﲔ ﺍﻟﻨﺼﻴﲔ:
)change(fn
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﺮﺑﻂ ﺍﻟﺘﺎﺑﻊ ﺍﶈﺪﺩ ﺑﺎﻟﻮﺳﻴﻂ fnﺑﺎﳊﺪﺙ changeﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ
ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ ,ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺭﺑﻂ ﺍﳊﺪﺙ changeﻟﻜﻞ ﻋﻨﺼﺮ select
ﻣﻮﺟﻮﺩ ﰲ ﺍﻟﺼﻔﺤﺔ ﻣﻊ ﺍﻟﺘﺎﺑﻊ ﺍﻟﺬﻱ ﻳﻌﺮﺽ ﺍﻟﻘﻴﻢ ﺍﻟﱵ ﰎ ﲢﺪﻳﺪﻫﺎ ﰲ ﺍﻟﻌﻨﺼﺮ:
• mousedown
• mouseup
• click
ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺭﺑﻂ ﺍﳊﺪﺙ clickﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ pﺍﳌﻮﺟﻮﺩﺓ ﰲ ﺍﻟﺼﻔﺤﺔ ﺑﺘﺎﺑﻊ ﻳﺆﺩﻱ ﺇﱃ ﺇﺧﻔﺎﺀ ﺍﻟﻌﻨﺼﺮ p
ﻋﻨﺪ ﺍﻟﻀﻐﻂ ﻋﻠﻴﻪ:
)dbclick(fn
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﺮﺑﻂ ﺍﳊﺪﺙ clickﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ
ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ ,ﻭﻳﺘﻢ ﻗﺪﺡ ﺍﳊﺪﺙ clickﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻣﺆﺷﺮ ﺍﻟﻔﺄﺭﺓ ﻓﻮﻕ ﻋﻨﺼﺮ ﻣﺎ ﻣﺮﺗﲔ
ﻣﺘﺘﺎﻟﻴﺘﲔ ,ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺭﺑﻂ ﺍﳊﺪﺙ dbclickﻷﻭﻝ ﻋﻨﺼﺮ divﻣﻮﺟﻮﺩ ﰲ ﺍﻟﺼﻔﺤﺔ ﺑﺘﺎﺑﻊ ﻳﻐﲑ ﺑﻌﺾ
ﺧﺼﺎﺋﺺ ﺍﻟﻌﻨﺼﺮ:
186 ﲨﻴﻊ ﺍﳊﻘﻮﻕ ﺗﺘﺒﻊ ﳊﻘﻮﻕ ﻣﻜﺘﺒﺔ jQuery
ﺃﻣﺎ ﺍﻟﺸﻴﻔﺮﺓ ﺍﻟﻜﺎﻣﻠﺔ ﻟﻠﻤﺜﺎﻝ ﺍﻟﺴﺎﺑﻖ ﻓﻬﻲ:
)error(fn
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﺮﺑﻂ ﺍﳊﺪﺙ errorﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ
ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ ,ﺑﺸﻜﻞ ﻋﺎﻡ ﻻ ﻳﻮﺟﺪ ﻣﻘﻴﺎﺱ ﻋﺎﳌﻲ ﻟﻠﺤﺪﺙ ,errorﻭﻟﻜﻦ ﰲ ﻣﻌﻈﻢ ﺍﳌﺘﺼﻔﺤﺎﺕ ﻳﺘﻢ ﻗﺪﺡ
ﺍﳊﺪﺙ errorﻋﻨﺪﻣﺎ ﳛﺪﺙ ﺧﻄﺄ JavaScriptﰲ ﺍﻟﺼﻔﺤﺔ ﻣﺜﻞ ﺇﺳﻨﺎﺩ ﻣﺴﺎﺭ ﺻﻮﺭﺓ ﻏﲑ ﻣﻮﺟﻮﺩﺓ ﻟﻠﺼﻔﺔ src
ﻟﻠﻌﻨﺼﺮ .img
ﺇﻥ ﰎ ﻗﺪﺡ ﺍﳊﺪﺙ errorﻣﻦ ﻗﺒﻞ ﺍﻟﻜﺎﺋﻦ windowﻋﻨﺪﻫﺎ ﺳﻴﺘﻢ ﲤﺮﻳﺮ ﺛﻼﺛﺔ ﻗﻴﻢ ﻛﻮﺳﻄﺎﺀ ﻟﻠﺘﺎﺑﻊ ﺍﳌﺮﺗﺒﻂ ﺑﺎﳊﺪﺙ
:error
• ﺭﺳﺎﻟﺔ ﺗﺸﺮﺡ ﺍﳋﻄﺄ )ﻣﺜﻞ :ﺍﳌﺘﺤﻮﻝ ﻏﲑ ﻣﻌﺮﻑ ,ﻳﻮﺟﺪ ﻣﻌﺎﻣﻞ ﻣﻔﻘﻮﺩ ﰲ ﺍﻟﺘﻌﺒﲑ .(...
• ﺍﳌﺴﺎﺭ ﺍﻟﻜﺎﻣﻞ ﻟﻠﺼﻔﺤﺔ ﺍﻟﱵ ﺣﺪﺙ ﻓﻴﻬﺎ ﺍﳋﻄﺄ.
• ﺭﻗﻢ ﺍﻟﺴﻄﺮ ﺍﻟﺬﻱ ﺣﺪﺙ ﻓﻴﻪ ﺍﳋﻄﺄ.
)(focus
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﻘﺪﺡ ﺍﳊﺪﺙ focusﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ
ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ ,ﻋﻨﺪ ﺍﺳﺘﺪﻋﺎﺀ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﲨﻴﻊ ﺍﻟﺘﻮﺍﺑﻊ ﺍﳌﺮﺗﺒﻄﺔ ﺑﺎﳊﺪﺙ focusﻟﻠﻌﻨﺼﺮ ,ﻭﰲ ﺍﳌﺜﺎﻝ
ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺇﻋﻄﺎﺀ ﺍﻟﺘﺮﻛﻴﺰ ﻟﻠﺤﻘﻞ ﺍﻟﻨﺼﻲ ﺍﻟﺬﻱ ﻗﻴﻤﺔ ﺍﻟﻮﺍﺻﻔﺔ idﻟﻪ ﺗﺴﺎﻭﻱ :login
)focus(fn
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﺮﺑﻂ ﺍﳊﺪﺙ focusﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ
ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ ,ﻭﻳﺘﻢ ﻗﺪﺡ ﺍﳊﺪﺙ focusﻋﻨﺪﻣﺎ ﻳﺴﺘﻘﺒﻞ ﺍﻟﻌﻨﺼﺮ ﺍﻟﺘﺮﻛﻴﺰ ﺇﻣﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﻨﻘﻞ ﻋﱪ ﺍﻟـ Tab
ﺃﻭ ﺑﻨﻘﻞ ﺍﻟﺘﺮﻛﻴﺰ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻣﺆﺷﺮ ﺍﻟﻔﺄﺭﺓ ,ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﻣﻨﻊ ﺍﳌﺴﺘﺨﺪﻡ ﻣﻦ ﺍﻟﻜﺘﺎﺑﺔ ﰲ ﺃﻱ ﺣﻘﻞ ﻧﺼﻲ ﻭﺫﻟﻚ
ﺑﻘﺪﺡ ﺍﳊﺪﺙ blurﻟﻠﺤﻘﻞ ﺍﻟﻨﺼﻲ ﻋﻨﺪﻣﺎ ﻳﺼﺒﺢ ﺍﻟﺘﺮﻛﻴﺰ ﻋﻠﻴﻪ:
)(keydown
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﻘﺪﺡ ﺍﳊﺪﺙ keydownﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ
ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ ,ﻋﻨﺪ ﺍﺳﺘﺪﻋﺎﺀ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﲨﻴﻊ ﺍﻟﺘﻮﺍﺑﻊ ﺍﳌﺮﺗﺒﻄﺔ ﺑﺎﳊﺪﺙ keydownﻟﻠﻌﻨﺼﺮ ,ﻛﻤﺎ
ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﺍﻟﻮﻇﻴﻔﺔ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﻟﻠﺤﺪﺙ keydownﻭﳝﻜﻦ ﻣﻨﻊ ﺗﻨﻔﻴﺬ ﺍﻟﻮﻇﻴﻔﺔ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﻟﻠﺤﺪﺙ keydown
)keydown(fn
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﺮﺑﻂ ﺍﳊﺪﺙ keydownﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ
ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ ,ﻭﻣﻦ ﺍﳌﻌﻠﻮﻡ ﺃﻥ ﺍﳊﺪﺙ keydownﻳﺘﻢ ﻗﺪﺣﻪ ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺍﻟﻀﻐﻂ ﻋﻠﻰ ﺯﺭ ﰲ ﻟﻮﺣﺔ
ﺍﳌﻔﺎﺗﻴﺢ .ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺭﺑﻂ ﺍﳊﺪﺙ keydownﻟﻠﻜﺎﺋﻦ windowﺑﺘﺎﺑﻊ:
)(keypress
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﻘﺪﺡ ﺍﳊﺪﺙ keypressﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ
ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ ,ﻋﻨﺪ ﺍﺳﺘﺪﻋﺎﺀ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﲨﻴﻊ ﺍﻟﺘﻮﺍﺑﻊ ﺍﳌﺮﺗﺒﻄﺔ ﺑﺎﳊﺪﺙ keypressﻟﻠﻌﻨﺼﺮ ,ﻛﻤﺎ ﻳﺘﻢ
ﺗﻨﻔﻴﺬ ﺍﻟﻮﻇﻴﻔﺔ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﻟﻠﺤﺪﺙ keypressﻭﳝﻜﻦ ﻣﻨﻊ ﺗﻨﻔﻴﺬ ﺍﻟﻮﻇﻴﻔﺔ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﻟﻠﺤﺪﺙ keypressﺑﺈﻋﺎﺩﺓ
ﺍﻟﻘﻴﻤﺔ falseﻣﻦ ﺃﺣﺪ ﺍﻟﺘﻮﺍﺑﻊ ﺍﳌﺮﺗﺒﻄﺔ ﺑﺎﳊﺪﺙ .keypressﻭﻣﻦ ﺍﳌﻌﻠﻮﻡ ﺃﻥ ﺍﳊﺪﺙ keypressﻳﺘﻢ ﻗﺪﺣﻪ ﻋﻨﺪﻣﺎ
ﻳﺘﻢ ﺍﻟﻀﻐﻂ ﻋﻠﻰ ﺯﺭ ﰲ ﻟﻮﺣﺔ ﺍﳌﻔﺎﺗﻴﺢ.
)keypress(fn
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﺮﺑﻂ ﺍﳊﺪﺙ keypressﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ
ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ ,ﻭﻣﻦ ﺍﳌﻌﻠﻮﻡ ﺃﻥ ﺍﳊﺪﺙ keypressﻳﺘﻢ ﻗﺪﺣﻪ ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺍﻻﻧﺘﻬﺎﺀ ﻣﻦ ﺍﻟﻀﻐﻂ ﻋﻠﻰ ﺯﺭ ﰲ ﻟﻮﺣﺔ
ﺍﳌﻔﺎﺗﻴﺢ ,ﻭﻳﻌﺮﻑ ﺍﳊﺪﺙ keypressﻋﻠﻰ ﺃﻧﻪ ﺍﳊﺪﺛﲔ keydownﻭ keypressﻋﻠﻰ ﻧﻔﺲ ﺍﳌﻔﺘﺎﺡ ,ﻭﺗﺴﻠﺴﻞ
ﻫﺬﻩ ﺍﻷﺣﺪﺍﺙ ﻫﻮ ﻛﻤﺎ ﻳﻠﻲ:
• keydown
• keypress
• keyup
ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺇﻇﻬﺎﺭ ﺍﻷﺣﺮﻑ ﻭﺍﻟﻔﺮﺍﻏﺎﺕ ﺍﻟﱵ ﺗﺘﻢ ﻃﺒﺎﻋﺘﻬﺎ ﰲ ﺍﳊﻘﻞ ﺍﻟﻨﺼﻲ:
)load(fn
ﻳﺴﺘﺨﺪﻡ ﻟﺮﺑﻂ ﺍﳊﺪﺙ loadﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ
ﺍﻟﺘﺎﺑﻊ ﺑﺘﺎﺑﻊ ﻳﺘﻢ ﺗﻨﻔﻴﺬﻩ ﻋﻨﺪ ﺍﻻﻧﺘﻬﺎﺀ ﻣﻦ ﲢﻤﻴﻞ ﺍﻟﻌﻨﺼﺮ ﺍﶈﺪﺩ .ﻭﻋﻨﺪ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﻠﺮﺑﻂ ﻣﻊ ﺍﳊﺪﺙ load
ﻟﻠﻜﺎﺋﻦ windowﻓﺈﻥ ﻫﺬﺍ ﺍﳊﺪﺙ ﺳﻴﺘﻢ ﻗﺪﺣﻪ ﻋﻨﺪ ﺍﻻﻧﺘﻬﺎﺀ ﻣﻦ ﲢﻤﻴﻞ ﻛﺎﻣﻞ ﳏﺘﻮﻳﺎﺕ ﺍﻟﻮﺛﻴﻘﺔ ﲟﺎ ﻓﻴﻬﺎ ﺍﻹﻃﺎﺭﺍﺕ
Framesﻭﺍﻟﺼﻮﺭ ﻭﻋﻨﺎﺻﺮ ﺍﻟﺼﻔﺤﺔ ﺑﺸﻜﻞ ﻛﺎﻣﻞ .ﺃﻣﺎ ﰲ ﺣﺎﻝ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﺎﺑﻊ ﻟﻠﺮﺑﻂ ﻣﻊ ﺍﳊﺪﺙ loadﻟﻌﻨﺼﺮ ﻣﺎ
ﻓﺈﻥ ﻫﺬﺍ ﺍﳊﺪﺙ ﻳﺘﻢ ﻗﺪﺣﻪ ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺍﻻﻧﺘﻬﺎﺀ ﻣﻦ ﲢﻤﻴﻞ ﻛﺎﻣﻞ ﳏﺘﻮﻳﺎﺕ ﺍﻟﻌﻨﺼﺮ ﻭﺍﻟﻌﻨﺼﺮ ﻧﻔﺴﻪ.
ﺳﻴﻌﻤﻞ ﺍﳊﺪﺙ loadﰲ ﺣﺎﻝ ﺭﺑﻄﻪ ﻣﻊ ﺗﺎﺑﻊ ﻣﺎ ﻗﺒﻞ ﺍﻻﻧﺘﻬﺎﺀ ﻣﻦ ﲢﻤﻴﻞ ﺍﻟﻌﻨﺼﺮ ﻭﺇﻻ ﻓﺈﻥ ﺷﻴﺌﹰﺎ ﻟﻦ ﳛﺪﺙ ,ﻃﺒﻌﹰﺎ ﻫﺬﻩ
ﺍﳊﺎﻟﺔ ﻟﻦ ﲢﺪﺙ ﻋﻨﺪ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺼﻴﻐﺔ )( $(document).readyﻷﺎ ﲢﻞ ﻫﺬﻩ ﺍﳌﺸﻜﻠﺔ ﺑﺸﻜﻞ ﺗﻠﻘﺎﺋﻲ .ﻭﰲ
ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﺷﻴﻔﺮﺓ ﻣﺎ ﻋﻨﺪ ﲢﻤﻴﻞ ﻛﺎﻣﻞ ﺍﻟﺼﻔﺤﺔ ﻣﻊ ﻛﺎﻣﻞ ﺍﻟﺼﻮﺭ ﻭﻋﻨﺎﺻﺮ ﺍﻟﺼﻔﺤﺔ:
ﺃﻣﺎ ﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺇﺿﺎﻓﺔ ﺍﻟﻜﻼﺱ bigImgﺇﱃ ﻛﻞ ﺻﻮﺭﺓ ﺍﺭﺗﻔﺎﻋﻬﺎ ﺃﻛﱪ ﻣﻦ 100ﺑﻌﺪ ﺍﻻﻧﺘﻬﺎﺀ ﻣﻦ ﲢﻤﻴﻠﻬﺎ
ﻣﺒﺎﺷﺮﺓ:
)mouseup(fn
ﻳﺴﺘﺨﺪﻡ ﻟﺮﺑﻂ ﺍﳊﺪﺙ mouseupﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ
ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ ,ﻭﻳﺘﻢ ﻗﺪﺡ ﺍﳊﺪﺙ mouseupﻋﻨﺪ ﲢﺮﻳﺮ ﻣﺆﺷﺮ ﺍﻟﻔﺄﺭﺓ ﺑﻌﺪ ﺍﻟﻀﻐﻂ ﻋﻠﻰ ﺍﻟﻌﻨﺼﺮ ﺍﳊﺎﱄ:
)scroll(fn
ﻳﺴﺘﺨﺪﻡ ﻟﺮﺑﻂ ﺍﳊﺪﺙ scrollﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ
ﺍﻟﺘﺎﺑﻊ ,ﻭﻳﺘﻢ ﻗﺪﺡ ﺍﳊﺪﺙ scrollﻋﻨﺪ ﺗﻐﻴﲑ ﺣﺎﻟﺔ ﺷﺮﻳﻂ ﺍﻟﺘﻤﺮﻳﺮ ,ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺍﻻﺳﺘﺠﺎﺑﺔ ﻟﺘﻐﲑ ﻣﻜﺎﻥ ﺷﺮﻳﻂ
ﺍﻟﺘﻤﺮﻳﺮ ﰲ ﺍﻟﺼﻔﺤﺔ:
)select(fn
ﻳﺴﺘﺨﺪﻡ ﻟﺮﺑﻂ ﺍﳊﺪﺙ selectﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ
ﺍﻟﺘﺎﺑﻊ ,ﻭﻳﺘﻢ ﻗﺪﺡ ﺍﳊﺪﺙ selectﻋﻨﺪ ﲢﺪﻳﺪ ﻧﺺ ﰲ ﺍﳊﻘﻞ ﺍﻟﻨﺼﻲ ﺃﻭ ﺣﱴ ﰲ ﺍﳊﻘﻞ ﺍﻟﻨﺼﻲ ﺍﳌﺘﻌﺪﺩ ﺍﻷﺳﻄﺮ:
)submit(fn
ﻳﺴﺘﺨﺪﻡ ﻟﺮﺑﻂ ﺍﳊﺪﺙ submitﳉﻤﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ
ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ ,ﻭﻳﺘﻢ ﻗﺪﺡ ﺍﳊﺪﺙ submitﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺇﺭﺳﺎﻝ ﻣﻌﻠﻮﻣﺎﺕ ﺍﻟﻨﻤﻮﺫﺝ formﺇﱃ ﺍﳋﺎﺩﻡ ,ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ
ﻳﺘﻢ ﻣﻨﻊ ﺍﳊﺪﺙ submitﻣﻦ ﺍﻟﺘﻨﻔﻴﺬ ﻣﺎﱂ ﻳﺘﻢ ﻛﺘﺎﺑﺔ ﺍﻟﻜﻠﻤﺔ correctﰲ ﺍﳊﺼﻞ ﺍﻟﻨﺼﻲ:
)]show(speed, [callback
ﻳﺴﺘﺨﺪﻡ ﻹﻇﻬﺎﺭ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ ﺑﺸﻜﻞ
ﺗﺪﺭﳚﻲ ﻭﺑﻌﺪﻫﺎ ﻳﻨﻔﺬ ﺗﺎﺑﻊ ﺍﺧﺘﻴﺎﺭﻱ ﻋﻨﺪ ﺍﻧﺘﻬﺎﺀ ﻋﻤﻠﻴﺔ ﺇﻇﻬﺎﺭ ﺍﻟﻌﻨﺼﺮ ﻳﺘﻢ ﲤﺮﻳﺮﻩ ﻛﻮﺳﻴﻂ ,callbackﻭﻳﺘﻢ ﺗﻐﻴﲑ
ﻋﺮﺽ ﻭﺍﺭﺗﻔﺎﻉ ﻭﺷﻔﺎﻓﻴﺔ ﺍﻟﻌﻨﺼﺮ ﺑﺸﻜﻞ ﺩﻳﻨﺎﻣﻜﻲ ﺑﻨﺎﺀ ﻋﻠﻰ ﻗﻴﻤﺔ ﺍﻟﻮﺳﻴﻂ ,speedﻭﺍﻟﻮﺳﻴﻂ speedﻳﻘﺒﻞ ﺇﺣﺪﻯ
ﺍﻟﻘﻴﻢ ﺍﻟﺘﺎﻟﻴﺔ:
ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺇﻇﻬﺎﺭ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ pﺍﳌﺨﻔﻴﺔ ﺑﺸﻜﻞ ﺑﻄﻴﺊ ﺑﻌﺪ 600ﻣﻴﻠﻠﻲ ﺛﺎﻧﻴﺔ:
)(hide
ﻳﺴﺘﺨﺪﻡ ﻹﺧﻔﺎﺀ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ ﺃﻭ ﺑﻌﻀﻬﺎ
ﰲ ﺣﺎﻝ ﺃﺎ ﻇﺎﻫﺮﺓ ﰲ ﺍﻟﺼﺤﻔﺔ ,ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺇﺧﻔﺎﺀ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ pﺍﳌﻮﺟﻮﺩﺓ ﰲ ﺍﻟﺼﻔﺤﺔ ﺑﻌﺪ ﲢﻤﻴﻞ
ﺍﻟﺼﻔﺤﺔ ﻭﳝﻜﻦ ﺇﺧﻔﺎﺀ ﺃﻱ ﻋﻨﺼﺮ ﺭﺍﺑﻂ aﻋﻨﺪ ﺍﻟﻀﻐﻂ ﻋﻠﻴﻪ:
)]hide(speed, [callback
ﻳﺴﺘﺨﺪﻡ ﻹﺧﻔﺎﺀ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ ﺑﺸﻜﻞ
ﺗﺪﺭﳚﻲ ﻭﺑﻌﺪﻫﺎ ﻳﻨﻔﺬ ﺗﺎﺑﻊ ﺍﺧﺘﻴﺎﺭﻱ ﻋﻨﺪ ﺍﻧﺘﻬﺎﺀ ﻋﻤﻠﻴﺔ ﺇﺧﻔﺎﺀ ﺍﻟﻌﻨﺼﺮ ﻳﺘﻢ ﲤﺮﻳﺮﻩ ﻛﻮﺳﻴﻂ ,callbackﻭﻳﺘﻢ ﺗﻐﻴﲑ
ﻋﺮﺽ ﻭﺍﺭﺗﻔﺎﻉ ﻭﺷﻔﺎﻓﻴﺔ ﺍﻟﻌﻨﺼﺮ ﺑﺸﻜﻞ ﺩﻳﻨﺎﻣﻜﻲ ﺑﻨﺎﺀ ﻋﻠﻰ ﻗﻴﻤﺔ ﺍﻟﻮﺳﻴﻂ ,speedﻭﺍﻟﻮﺳﻴﻂ speedﻳﻘﺒﻞ ﺇﺣﺪﻯ
ﺍﻟﻘﻴﻢ ﺍﻟﺘﺎﻟﻴﺔ:
)(toggle
ﻳﺴﺘﺨﺪﻡ ﻟﻺﻇﻬﺎﺭ ﺃﻭ ﺇﺧﻔﺎﺀ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ
ﺑﻨﺎﺀ ﻋﻠﻰ ﺣﺎﻟﺔ ﺍﻟﻌﻨﺼﺮ ﺍﳊﺎﻟﻴﺔ ﻓﺈﻥ ﻛﺎﻥ ﻇﺎﻫﺮﹰﺍ ﻋﻨﺪﻫﺎ ﻳﺘﻢ ﺇﺧﻔﺎﺅﻩ ﻭﺇﻥ ﻛﺎﻥ ﳐﻔﻴﹰﺎ ﺳﻴﺘﻢ ﺇﻇﻬﺎﺭﻩ:
)toggle(switch
ﻳﺴﺘﺨﺪﻡ ﻟﻺﻇﻬﺎﺭ ﺃﻭ ﺇﺧﻔﺎﺀ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ
ﺑﻨﺎﺀ ﻋﻠﻰ ﻗﻴﻤﺔ ﺍﻟﻮﺳﻴﻂ switchﺣﻴﺚ ﻳﺘﻢ ﺇﻇﻬﺎﺭ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﻋﻨﺪﻣﺎ ﺗﻜﻮﻥ ﻗﻴﻤﺔ switchﺗﺴﺎﻭﻱ falseﻭﻳﺘﻢ
ﺇﺧﻔﺎﺀ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﰲ ﺣﺎﻟﺔ ﻛﺎﻧﺖ ﻗﻴﻤﺔ switchﺗﺴﺎﻭﻱ :true
)]toggle(speed, [callback
ﻳﺴﺘﺨﺪﻡ ﻟﻺﻇﻬﺎﺭ ﺃﻭ ﺇﺧﻔﺎﺀ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ
ﺑﻨﺎﺀ ﻋﻠﻰ ﺣﺎﻟﺔ ﺍﻟﻌﻨﺼﺮ ﺍﳊﺎﻟﻴﺔ ﻓﺈﻥ ﻛﺎﻥ ﻇﺎﻫﺮﹰﺍ ﻋﻨﺪﻫﺎ ﻳﺘﻢ ﺇﺧﻔﺎﺅﻩ ﻭﺇﻥ ﻛﺎﻥ ﳐﻔﻴﹰﺎ ﺳﻴﺘﻢ ﺇﻇﻬﺎﺭﻩ ,ﻭﺗﺘﻢ ﺍﻟﻌﻤﻠﻴﺔ ﺑﺸﻜﻞ
ﺗﺪﺭﳚﻲ ﺑﻨﺎﺀ ﻋﻠﻰ ﻗﻴﻤﺔ speedﻭﺑﻌﺪﻫﺎ ﻳﻨﻔﺬ ﺗﺎﺑﻊ ﺍﺧﺘﻴﺎﺭﻱ ﻋﻨﺪ ﺍﻧﺘﻬﺎﺀ ﻋﻤﻠﻴﺔ ﺇﺧﻔﺎﺀ ﺍﻟﻌﻨﺼﺮ ﻳﺘﻢ ﲤﺮﻳﺮﻩ ﻛﻮﺳﻴﻂ
,callbackﻭﻳﺘﻢ ﺗﻐﻴﲑ ﻋﺮﺽ ﻭﺍﺭﺗﻔﺎﻉ ﻭﺷﻔﺎﻓﻴﺔ ﺍﻟﻌﻨﺼﺮ ﺑﺸﻜﻞ ﺩﻳﻨﺎﻣﻜﻲ ﺑﻨﺎﺀ ﻋﻠﻰ ﻗﻴﻤﺔ ﺍﻟﻮﺳﻴﻂ ,speedﻭﺍﻟﻮﺳﻴﻂ
speedﻳﻘﺒﻞ ﺇﺣﺪﻯ ﺍﻟﻘﻴﻢ ﺍﻟﺘﺎﻟﻴﺔ:
ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﺳﻴﺘﻢ ﺇﻇﻬﺎﺭ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ divﺑﺸﻜﻞ ﺗﺪﺭﳚﻲ ﻋﻨﺪ ﺍﻟﻨﻘﺮ ﻟﻠﻤﺮﺓ ﺍﻷﻭﱃ ﻋﻠﻰ ﺍﻟﻜﻠﻤﺔ !,Click me
ﻭﺇﺧﻔﺎﺅﻫﺎ ﲨﻴﻌﻬﺎ ﻋﻨﺪ ﺍﻟﻀﻐﻂ ﻣﺮﺓ ﺛﺎﻧﻴﺔ ﻋﻠﻰ ﺍﻟﻜﻠﻤﺔ !:Click me
ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺇﺧﻔﺎﺀ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ divﻋﻨﺪ ﺍﻟﻀﻐﻂ ﲟﺆﺷﺮ ﺍﻟﻔﺄﺭﺓ ﻋﻠﻰ ! Click meﻭﻳﺘﻢ ﺇﻇﻬﺎﺭﻫﺎ ﻣﺮﺓ
ﺃﺧﺮﻯ ﻋﻨﺪ ﺍﻟﻨﻘﺮ ﻋﻠﻰ ! Click meﻣﺮﺓ ﺃﺧﺮﻯ:
ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺇﻇﻬﺎﺭ ﺃﻭﻝ ﻋﻨﺼﺮ divﳐﻔﻲ ﻋﻨﺪ ﺍﻟﻨﻘﺮ ﻋﻠﻰ :Click here
)]fadeout(speed, [callback
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻹﺧﻔﺎﺀ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﱵ ﲤﺖ ﻣﻄﺎﺑﻘﺘﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﶈﺪﺩ ﺍﻟﺬﻱ ﰎ ﺍﺳﺘﺪﻋﺎﺅﻩ ﻗﺒﻞ ﺍﻟﺘﺎﺑﻊ
ﺑﺘﻐﻴﲑ ﻗﻴﻤﺔ ﺧﺎﺻﻴﺔ ﺍﻟﺸﻔﺎﻓﻴﺔ opacityﻟﻠﻌﻨﺼﺮ ﺑﺸﻜﻞ ﺗﺪﺭﳚﻲ ﺑﻨﺎﺀ ﻋﻠﻰ ﻗﻴﻤﺔ ﺍﻟﻮﺳﻴﻂ speedﻭﺑﻌﺪﻫﺎ ﻳﻨﻔﺬ ﺗﺎﺑﻊ
222 ﲨﻴﻊ ﺍﳊﻘﻮﻕ ﺗﺘﺒﻊ ﳊﻘﻮﻕ ﻣﻜﺘﺒﺔ jQuery
ﺍﺧﺘﻴﺎﺭﻱ ﻋﻨﺪ ﺍﻧﺘﻬﺎﺀ ﻋﻤﻠﻴﺔ ﺇﺧﻔﺎﺀ ﺍﻟﻌﻨﺼﺮ ﻳﺘﻢ ﲤﺮﻳﺮﻩ ﻛﻮﺳﻴﻂ ,callbackﻭﻳﺘﻢ ﺗﻐﻴﲑ ﺷﻔﺎﻓﻴﺔ ﺍﻟﻌﻨﺼﺮ ﺑﺸﻜﻞ ﺩﻳﻨﺎﻣﻜﻲ
ﺑﻨﺎﺀ ﻋﻠﻰ ﻗﻴﻤﺔ ﺍﻟﻮﺳﻴﻂ ,speedﻭﺍﻟﻮﺳﻴﻂ speedﻳﻘﺒﻞ ﺇﺣﺪﻯ ﺍﻟﻘﻴﻢ ﺍﻟﺘﺎﻟﻴﺔ:
ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺇﺧﻔﺎﺀ ﺍﻟﻌﻨﺼﺮ spanﻋﻨﺪ ﺍﻟﻀﻐﻂ ﻋﻠﻴﻪ ﳌﺆﺷﺮ ﺍﻟﻔﺄﺭﺓ:
ﻭﺍﻟﻘﻴﻢ ﺍﳌﺮﺗﺒﻄﺔ ﻣﻊ ﺍﳌﻔﺎﺗﻴﺢ ﺗﻌﱪ ﻋﻦ ﺍﻟﻘﻴﻢ ﺍﻟﱵ ﺳﺘﻨﺘﻬﻲ ﺇﻟﻴﻬﺎ ﻗﻴﻤﺔ ﻛﻞ ﺧﺎﺻﻴﺔ ,ﻓﻌﻨﺪﻣﺎ ﻳﺘﻢ ﲤﺮﻳﺮ ﻗﻴﻤﺔ ﺭﻗﻤﻴﺔ ﻛﻘﻴﻤﺔ
ﺟﺪﻳﺪﺓ ﻟﻠﺨﺎﺻﻴﺔ ﻋﻨﺪﻫﺎ ﻓﺈﻥ ﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺳﺘﺘﺪﺭﺝ ﻣﻦ ﺍﻟﻘﻴﻤﺔ ﺍﳊﺎﻟﻴﺔ ﺇﱃ ﺍﻟﻘﻴﻤﺔ ﺍﳉﺪﻳﺪﺓ ,ﺃﻣﺎ ﺇﻥ ﰎ ﲢﺪﻳﺪ ﻗﻴﻢ
ﻧﺼﻴﺔ ﻣﺜﻞ hid, showﻋﻨﺪﻫﺎ ﺳﻴﺘﻢ ﺗﻨﻔﻴﺬ ﺍﻟﻮﻇﻴﻔﺔ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﳍﺬﻩ ﺍﻟﻘﻴﻢ .ﺃﻳﻀﹰﺎ ﳝﻜﻦ ﺗﻐﻴﲑ ﻗﻴﻢ ﺍﳋﺼﺎﺋﺺ
ﺑﺎﺳﺘﺨﺪﺍﻡ ﻭﺣﺪﺍﺕ ﻗﻴﺎﺱ ﳐﺘﻠﻔﺔ em, %ﰲ ﺣﺎﻝ ﺃﺎ ﻣﺪﻋﻮﻣﺔ ﻣﻦ ﻗﺒﻞ ﺍﳋﺎﺻﻴﺔ ﻧﻔﺴﻬﺎ ,ﻛﻤﺎ ﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ = +ﺃﻭ
= -ﻗﺒﻞ ﻗﻴﻤﺔ ﺍﳋﺎﺻﻴﺔ ﻟﻜﻲ ﻳﺘﻢ ﺗﻐﻴﲑ ﻗﻴﻤﺔ ﺍﳋﺎﺻﻴﺔ ﺑﺸﻜﻞ ﻣﺘﺰﺍﻳﺪ ﺃﻡ ﻣﺘﻨﺎﻗﺺ.
ﺃﻣﺎ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻮﺳﻴﻂ durationﻓﻔﻲ ﺣﺎﻝ ﺃﻥ ﻗﻴﻤﺘﻪ ﻣﺴﺎﻭﻳﺔ ﺍﻟﻘﻴﻤﺔ 0ﻋﻨﺪﻫﺎ ﻳﺘﻢ ﺗﻐﻴﲑ ﲨﻴﻊ ﻗﻴﻢ ﺍﳋﺼﺎﺋﺺ ﺍﶈﺪﺩﺓ
ﺑﺎﻟﻮﺳﻴﻂ paramsﺑﺪﻭﻥ ﺃﻳﺔ ﺗﺄﺧﲑ.
ﻭﺍﻟﻮﺳﻴﻂ durationﻳﻘﺒﻞ ﺇﺣﺪﻯ ﺍﻟﻘﻴﻢ ﺍﻟﺘﺎﻟﻴﺔ ,ﺍﻟﱵ ﺗﻌﱪ ﻋﻦ ﺳﺮﻋﺔ ﺗﻨﻔﻴﺬ ﺍﻟﺘﻐﻴﲑ:
ﺃﻣﺎ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻮﺳﻴﻂ easingﻓﻴﻘﺒﻞ ﺍﻟﻘﻴﻤﺘﲔ linearﺃﻭ ,swingﻭﻣﻦ ﺃﺟﻞ ﺍﺳﺘﺨﺪﺍﻣﻪ ﳚﺐ ﺍﺳﺘﺨﺪﺍﻡ ,plugin
ﺃﻣﺎ ﺍﻟﻮﺳﻴﻂ callbackﺍﻻﺧﺘﻴﺎﺭﻱ ﻓﻬﻮ ﺗﺎﺑﻊ ﻳﺘﻢ ﺗﻨﻔﻴﺬﻩ ﺑﻌﺪ ﺍﻻﻧﺘﻬﺎﺀ ﻣﻦ ﺗﻨﻔﻴﺬ ﺍﻟﺘﺎﺑﻊ .animate
ﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﲢﺮﻳﻚ ﺍﻟﻌﻨﺼﺮ divﺍﳌﻮﺟﻮﺩ ﰲ ﺍﻟﺼﻔﺤﺔ ﺇﱃ ﺍﻟﻴﻤﲔ ﺃﻭ ﺇﱃ ﺍﻟﻴﺴﺎﺭ ﺣﺴﺐ ﺍﻟﺰﺭ ﺍﻟﺬﻱ ﻳﺘﻢ ﺍﻟﻀﻐﻂ
ﻋﻠﻴﻪ ,ﻭﻻﺣﻆ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺮﻣﺰﻳﻦ = +ﻭ = -ﻗﺒﻞ ﺍﻟﻘﻴﻢ ﺍﳉﺪﻳﺪﺓ:
ﻭﺍﻟﻘﻴﻢ ﺍﳌﺮﺗﺒﻄﺔ ﻣﻊ ﺍﳌﻔﺎﺗﻴﺢ ﺗﻌﱪ ﻋﻦ ﺍﻟﻘﻴﻢ ﺍﻟﱵ ﺳﺘﻨﺘﻬﻲ ﺇﻟﻴﻬﺎ ﻗﻴﻤﺔ ﻛﻞ ﺧﺎﺻﻴﺔ ,ﻓﻌﻨﺪﻣﺎ ﻳﺘﻢ ﲤﺮﻳﺮ ﻗﻴﻤﺔ ﺭﻗﻤﻴﺔ ﻛﻘﻴﻤﺔ
ﺟﺪﻳﺪﺓ ﻟﻠﺨﺎﺻﻴﺔ ﻋﻨﺪﻫﺎ ﻓﺈﻥ ﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺳﺘﺘﺪﺭﺝ ﻣﻦ ﺍﻟﻘﻴﻤﺔ ﺍﳊﺎﻟﻴﺔ ﺇﱃ ﺍﻟﻘﻴﻤﺔ ﺍﳉﺪﻳﺪﺓ ,ﺃﻣﺎ ﺇﻥ ﰎ ﲢﺪﻳﺪ ﻗﻴﻢ
• ﺍﻟﻮﺳﻴﻂ durationﻳﻘﺒﻞ ﺇﺣﺪﻯ ﺍﻟﻘﻴﻢ ﺍﻟﺘﺎﻟﻴﺔ ,ﺍﻟﱵ ﺗﻌﱪ ﻋﻦ ﺳﺮﻋﺔ ﺗﻨﻔﻴﺬ ﺍﻟﺘﻐﻴﲑ:
slow, normal, fast oﻛﻘﻴﻢ ﻧﺼﻴﺔ.
oﺃﻭ ﺭﻗﻢ ﻳﻌﱪ ﺑﺎﳌﻴﻠﻠﻲ ﺛﺎﻧﻴﺔ ﻳﻌﱪ ﻋﻦ ﺳﺮﻋﺔ ﺇﻇﻬﺎﺭ ﺍﻟﻌﻨﺼﺮ.
• ﺍﻟﻮﺳﻴﻂ easingﻓﻴﻘﺒﻞ ﺍﻟﻘﻴﻤﺘﲔ linearﺃﻭ ,swingﻭﻣﻦ ﺃﺟﻞ ﺍﺳﺘﺨﺪﺍﻣﻪ ﳚﺐ ﺍﺳﺘﺨﺪﺍﻡ .plugin
• ,completeﺗﺎﺑﻊ ﻳﺘﻢ ﺗﻨﻔﻴﺬﻩ ﻋﻨﺪ ﺍﻻﻧﺘﻬﺎﺀ ﻣﻦ ﺗﻨﻔﻴﺬ ﺍﻟﺘﺎﺑﻊ .animate
• ,queueﻳﻘﺒﻞ ﻫﺬﺍ ﺍﻟﻮﺳﻴﻂ ﻗﻴﻤﺘﲔ ﺇﻣﺎ trueﺃﻭ falseﻭﰲ ﺣﺎﻝ ﲢﺪﻳﺪ ﺍﻟﻘﻴﻤﺔ falseﻋﻨﺪﻫﺎ ﺳﻴﺘﻢ ﺗﻨﻔﻴﺬ
ﺍﻟﺘﺎﺑﻊ animateﻣﺒﺎﺷﺮﺓ ﺑﺪﻭﻥ ﺍﻧﺘﻈﺎﺭ ﺩﻭﺭﻩ.
ﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺗﻐﻴﲑ ﻗﻴﻤﺔ ﺍﳋﺎﺻﻴﺘﲔ heightﻭ opacityﻟﻜﻞ ﺍﻟﻌﻨﺎﺻﺮ pﰲ ﺍﻟﺼﻔﺤﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻗﻴﻤﺔ slow
ﻟﻠﻮﺳﻴﻂ :duration
ﺃﻣﺎ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻓﻴﺘﻢ ﲢﺮﻳﻚ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ pﺍﳌﻮﺟﻮﺩﺓ ﰲ ﺍﻟﺼﻔﺤﺔ ﺇﱃ ﺍﻟﻴﺎﺳﺮ ﲟﻘﺪﺍﺭ 50ﺑﻴﻜﺴﻞ ﻭﻳﺘﻢ ﺗﻨﻔﻴﺬ ﺍﻟﺘﺎﺑﻊ
ﺧﻼﻝ 500ﻣﻴﻠﻠﻲ ﺛﺎﻧﻴﺔ ﻭﻗﻴﻤﺔ ﺍﻟﻮﺳﻴﻂ queueﻫﻲ falseﻟﺘﻨﻔﻴﺬ ﺍﻟﺘﺎﺑﻊ ﻣﺒﺎﺷﺮﺓ:
ﺃﻣﺎ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻓﻴﻈﻬﺮ ﻛﻴﻔﻴﺔ ﺍﺗﺴﺨﺪﺍﻡ ﺍﻟﻮﺳﻴﻂ easingﺍﻟﺬﻱ ﻟﻦ ﻳﻌﻤﻞ ﺇﻻ ﺑﻮﺟﻮﺩ ﺍﻟـ pluginﺍﻟﺬﻱ ﻳﻔﻌﻞ ﻫﺬﻩ
ﺍﳋﺎﺻﻴﺔ:
ﻣﻼﺣﻈﺔ :ﰲ ﺣﺎﻝ ﺍﺳﺘﺨﺪﺍﻡ ﺍﳋﻴﺎﺭ dataTypeﰲ ﺗﻨﻔﻴﺬ ﺍﻟﺘﺎﺑﻊ ﻓﻴﺠﺐ ﺍﻟﺘﺄﻛﺪ ﻣﻦ ﺃﻥ ﺍﳋﺎﺩﻡ ﻳﺮﺳﻞ ﻧﻮﻉ ﺻﺤﻴﺢ ﻣﻦ
ﺍﻟﺒﻴﺎﻧﺎﺕ ﺗﺘﻮﺍﻓﻖ ﻣﻊ ﻗﻴﻤﺔ ﺍﳋﻴﺎﺭ dataTypeﻭﰲ ﺣﺎﻝ ﺃﻥ ﻧﻮﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﳌﺮﺳﻠﺔ ﻣﻦ ﺍﳋﺎﺩﻡ ﻻ ﺗﺘﻮﺍﻓﻖ ﻣﻊ ﻗﻴﻤﺔ
dataTypeﻫﺬﺍ ﺳﻴﺆﺩﻱ ﺇﱃ ﺃﺧﻄﺎﺀ ﰲ ﻋﻤﻠﻴﺔ ﺍﻟﺘﻨﻔﻴﺬ.
ﻣﻼﺣﻈﺔ :ﺃﻱ ﻋﻤﻠﻴﺔ ﺗﻨﻔﻴﺬ ﻟﺼﻔﺤﺔ ﺧﺎﺭﺟﻴﺔ )ﺻﻔﺤﺔ ﺧﺎﺭﺝ ﺍﻟﻨﻄﺎﻕ ﺍﳊﺎﱄ( ﳚﺐ ﺗﻨﻔﻴﺬﻫﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ GETﰲ ﺣﺎﻝ
ﺃﻥ ﻗﻴﻤﺔ ﺍﳋﻴﺎﺭ dataTypeﻳﺴﺎﻭﻱ ﺇﺣﺪﻯ ﺍﻟﻘﻴﻤﺘﲔ scriptﺃﻭ .jsonpﻭﺃﻳﻀﹰﺎ ﻓﺈﻥ ﺍﳋﻴﺎﺭﺍﺕ ﺍﻟﱵ ﺗﺘﻄﻠﺐ ﻛﺎﺋﻦ
XMLHTTPRequestﻻ ﺗﻜﻮﻥ ﳑﻜﻨﺔ ﻋﻨﺪ ﺗﻨﻔﻴﺬ ﻋﻤﻠﻴﺔ ﻋﻠﻰ ﺻﻔﺤﺔ ﺧﺎﺭﺝ ﺍﻟﻨﻄﺎﻕ ﺍﳊﺎﱄ ,ﻭﺃﻳﻀﹰﺎ ﻳﺘﻢ ﻳﺘﻢ
ﺗﻨﻔﻴﺬ ﺍﻟﺘﺎﺑﻴﻌﻦ completeﻭ successﻋﻨﺪ ﺍﻻﻧﺘﻬﺎﺀ ﻣﻦ ﺗﻨﻔﻴﺬ ﺍﻟﻄﻠﺐ ﻭﻟﻜﻦ ﺑﺪﻭﻥ ﺍﳊﺼﻮﻝ ﻋﻠﻰ ﻛﺎﺋﻦ ﻣﻦ ﺍﻟﻨﻮﻉ
,XHRﺃﻣﺎ ﺍﻟﺘﺎﺑﻌﲔ beforeSendﻭ dataFilterﻓﻼ ﻳﺘﻢ ﺗﻨﻔﻴﺬﳘﺎ.
ﺍﻟﺘﺎﺑﻊ ajaxﰲ ﺍﻹﺻﺪﺍﺭ 1.3ﻛﻤﺎ ﰲ ﺍﻹﺻﺪﺍﺭ 1.2ﳝﻜﻦ ﺃﻥ ﳛﻤﻞ ﺑﻴﺎﻧﺎﺕ JSONﻣﻮﺟﻮﺩﺓ ﻋﻠﻰ ﻧﻄﺎﻕ ﺁﺧﺮ ﰲ
ﺣﺎﻝ ﲢﺪﻳﺪ ﺍﻻﺳﺘﺪﻋﺎﺀ ﺍﻟﻌﻜﺴﻲ ﻟـ ,JSONPﻭﺍﻟﺬﻱ ﳝﻜﻦ ﺗﻨﻔﻴﺬﻫﺎ ﺑﺈﺣﺪﻯ ﺍﻟﻄﺮﻳﻘﺘﲔ:
• ﻛﺘﺎﺑﺔ ﻋﻨﻮﺍﻥ ﺍﻟـ URLﺍﻟﺬﻱ ﺗﺮﻳﺪ ﺗﻨﻔﻴﺬﻩ ﺑﺎﻟﺼﻴﻐﺔ ?= myurl?callbackﻋﻨﺪﻫﺎ ﻓﺈﻥ jQuery
ﺗﺴﺘﺒﺪﻝ ﺍﻹﺷﺎﺭﺓ ? ﺍﻟﺜﺎﻧﻴﺔ ﻭﺑﺸﻜﻞ ﺗﻠﻘﺎﺋﻲ ﺑﺎﺳﻢ ﺍﻟﺘﺎﺑﻊ ﺍﻟﺼﺤﻴﺢ ﻟﺘﻨﻔﻴﺬﻩ.
• ﺃﻭ ﰲ ﺣﺎﻝ ﲢﺪﻳﺪ ﻗﻴﻤﺔ dataTypeﺇﱃ jsonpﻓﻌﻨﺪﻫﺎ ﻳﺘﻢ ﻳﺘﻨﻔﻴﺬ ﺍﻻﺳﺘﺪﻋﺎﺀ ﺍﻟﻌﻜﺴﻲ ﺍﳌﻨﺎﺳﺐ ﺑﺸﻜﻞ
ﺗﻠﻘﺎﺋﻲ ﰲ ﻋﻤﻠﻴﺔ ﺍﻟﺘﻨﻔﻴﺬ.
ﺃﻣﺎ ﻗﻴﻢ ﺍﻟﻮﺳﻴﻂ optionsﻓﻬﻲ ﻋﺒﺎﺭﺓ ﻋﻦ ﳎﻤﻮﻋﺔ ﻣﻦ ﺍﳌﻔﺎﺗﻴﺢ ﻭﺍﻟﻘﻴﻢ ,ﻭﻛﻠﻬﺎ ﻋﺒﺎﺭﺓ ﻋﻦ ﻗﻴﻤﺔ ﺍﺧﺘﻴﺎﺭﻳﺔ ﳝﻜﻦ ﺗﻌﻴﲔ
ﺍﻟﻘﻴﻢ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﳍﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﺎﺑﻊ )(.$.ajaxSetup
beforeSend
ﺗﺎﺑﻊ ﺍﺳﺘﺪﻋﺎﺀ ﻋﻜﺴﻲ ﻳﺘﻢ ﺗﻨﻔﻴﺬﻩ ﻗﺒﻞ ﻋﻤﻠﻴﺔ ﺇﺭﺳﺎﻝ ﺍﻟﻄﻠﺐ ﳝﻜﻦ ﻣﻦ ﺧﻼﻟﻪ ﺗﻌﺪﻳﻞ ﻗﻴﻢ ﺍﻟﻜﺎﺋﻦ
XMLHTTPRequestﻗﺒﻞ ﺇﺭﺳﺎﻟﻪ ,ﻭﰲ ﺣﺎﻝ ﺇﻋﺎﺩﺓ ﺍﻟﻘﻴﻤﺔ falseﻣﻦ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻋﻨﺪﻫﺎ ﺳﻴﺘﻢ ﺇﻳﻘﺎﻑ ﺗﻨﻔﻴﺬ
ﺍﻟﺘﺎﺑﻊ ,ajaxﻭﻟﻠﺘﺎﺑﻊ BeforeSendﺍﻟﺼﻴﻐﺔ ﺍﻟﺘﺎﻟﻴﺔ:
cache
ﻳﻘﺒﻞ ﻫﺬﺍ ﺍﳋﻴﺎﺭ ﻗﻴﻤﺔ ﻣﻨﻄﻘﻴﺔ trueﺃﻭ falseﻭﺍﻟﻘﻴﻤﺔ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﺗﺴﺎﻭﻱ trueﺃﻣﺎ ﰲ ﺣﺎﻝ ﺃﻥ ﻗﻴﻤﺔ
dataTypeﺗﺴﺎﻭﻱ scriptﺃﻭ jsonpﻓﺈﻥ ﺍﻟﻘﻴﻤﺔ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﳍﺬﺍ ﺍﳋﻴﺎﺭ ﻫﻲ ,falseﻭﰲ ﺣﲔ ﺃﻥ ﻗﻴﻤﺘﻬﺎ
ﺗﺴﺎﻭﻱ falseﻓﻬﺬﺍ ﺳﻴﻤﻨﻊ ﺍﳌﺘﺼﻔﺢ ﻣﻦ ﲣﺰﻳﻦ ﺍﻟﺼﻔﺤﺔ ﺍﻟﱵ ﻳﺘﻢ ﺗﻨﻔﻴﺬﻫﺎ ﰲ ﺍﻟﺬﺍﻛﺮﺓ ﺍﳌﺆﻗﺘﺔ ﻟﻠﻤﺘﺼﻔﺢ.
complete
ﺗﺎﺑﻊ ﺍﺳﺘﺪﻋﺎﺀ ﻋﻜﺴﻲ ﻳﺘﻢ ﺗﻨﻔﻴﺬﻩ ﺑﻌﺪ ﺍﻻﻧﺘﻬﺎﺀ ﻣﻦ ﺗﻨﻔﻴﺬ ﺍﻟﻄﻠﺐ ﺑﺸﻜﻞ ﻛﺎﻣﻞ )ﺑﻌﺪ ﺗﻨﻔﻴﺬ ﺗﻮﺍﺑﻊ ﺍﻻﺳﺘﺪﻋﺎﺀ
successﻭﺗﻮﺍﺑﻊ ﺍﻻﺳﺘﺪﻋﺎﺀ ﺍﳋﺎﺻﺔ ﺑﺎﻷﺧﻄﺎﺀ ,(error callbacksﻭﳍﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻭﺳﻴﻄﲔ ﺍﻷﻭﻝ ﻫﻮ ﻛﺎﺋﻦ ﻣﻦ
ﺍﻟﻨﻮﻉ XMLHTTPRequestﻭﺍﻟﺜﺎﱐ ﻗﻴﻤﺔ ﻧﺼﻴﺔ ﲢﺪﺩ ﻣﻌﻠﻮﻣﺎﺕ ﻋﻦ ﳒﺎﺡ ﺍﻟﻄﻠﺐ ,ﻭﻳﺘﻢ ﺗﻨﻔﻴﺬ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ
ﺩﺍﺋﻤﹰﺎ ﺳﻮﺍﺀ ﳒﺤﺖ ﺃﻭ ﻓﺸﻠﺖ ﻋﻤﻠﻴﺔ ﺍﻟﺘﻨﻔﻴﺬ ﻭﰲ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﻨﻔﻴﺬ ﺍﻟﻐﲑ ﻣﺘﺰﺍﻣﻨﺔ ﻭﺍﳌﺘﺰﺍﻣﻨﺔ:
contentType
ﻗﻴﻤﺔ ﻧﺼﻴﺔ ﲢﺪﺩ ﻧﻮﻉ ﺍﳌﻌﻠﻮﻣﺎﺕ ﺍﻟﱵ ﺗﺮﺳﻞ ﺇﱃ ﺍﳋﺎﺩﻡ ﻭﺍﻟﻘﻴﻤﺔ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﻫﻲ application/x-
www-form-urlencodedﻭﻫﺬﺍ ﺍﻟﻘﻴﻤﺔ ﻣﻨﺎﺳﺒﺔ ﰲ ﻣﻌﻈﻢ ﺍﳊﺎﻻﺕ.
data
ﻳﺘﻤﻀﻦ ﻫﺬﺍ ﺍﳋﻴﺎﺭ ﺍﳌﻌﻠﻮﻣﺎﺕ ﺍﻟﱵ ﺳﻴﺘﻢ ﺇﺭﺳﺎﳍﺎ ﺇﱃ ﺍﳋﺎﺩﻡ ,ﺣﻴﺚ ﻳﺘﻢ ﲢﻮﻳﻠﻬﺎ ﺇﱃ ﻗﻴﻢ ﺗﺮﺳﻞ ﺑﻮﺍﺳﻄﺔ ﺍﻟـ
query stringﺃﻱ ﲢﻮﻝ ﺇﱃ ﻗﻴﻤﺔ ﻧﺼﻴﺔ ﻳﺘﻢ ﺇﳊﺎﻗﻬﺎ ﺑﻌﻨﻮﺍﻥ ﺍﻟﺼﻔﺤﺔ ﺍﶈﺪﺩ ,ﻭﳝﻜﻦ ﺍﺳﺘﺨﺎﺩﻡ ﺍﳋﻴﺎﺭ
239 ﲨﻴﻊ ﺍﳊﻘﻮﻕ ﺗﺘﺒﻊ ﳊﻘﻮﻕ ﻣﻜﺘﺒﺔ jQuery
processDataﳌﻨﻊ ﻋﻤﻠﻴﺔ ﺍﳌﻌﺎﳉﺔ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﻫﺬﻩ .ﻭﻗﻴﻢ ﺍﳋﻴﺎﺭ dataﳚﺐ ﺃﻥ ﺗﻜﻮﻥ ﻋﻠﻰ ﺷﻜﻞ ﺃﺯﻭﺍﺝ ﻣﻦ
ﺍﳌﻔﺎﺗﻴﺢ ﻭﺍﻟﻘﻴﻢ ,key/valueﻭﰲ ﺣﺎﻝ ﺃﻥ ﺍﻟﻘﻴﻤﺔ ﻋﺒﺎﺭﺓ ﻋﻦ ﻣﺼﻔﻮﻓﺔ ﻋﻨﺪﻫﺎ ﻳﺘﻢ ﲢﻮﻳﻠﻬﺎ ﺇﱃ ﳎﻤﻮﻋﺔ ﻣﻦ ﺍﻟﻘﻴﻢ ﳍﺎ
ﺍﳌﻔﺘﺎﺡ ﻧﻔﺴﻪ )ﻣﺜﺎﻝ {foo:['bar1', 'bar2']} :ﺗﺼﺒﺢ .&foo=bar1&foo=bar2
dataFilter
ﺗﺎﺑﻊ ﺍﺳﺘﺪﻋﺎﺀ ﻋﻜﺴﻲ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻣﻪ ﳌﻌﺎﳉﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻷﺻﻠﻴﺔ ﺍﳌﻌﺎﺩﺓ ﻣﻦ ﻗﺒﻞ ﺍﳋﺎﺩﻡ ﰲ ﺍﻟﻜﺎﺋﻦ
,XMLHTTPRequestﻫﻮ ﺗﺎﺑﻊ ﻳﻨﻔﺬ ﻗﺒﻞ ﻋﻤﻠﻴﺔ ﺗﺮﺷﻴﺢ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻟﺘﺠﻬﻴﺰ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺑﺎﻟﺸﻜﻞ ﺍﳌﻄﻠﻮﺏ
ﻹﻋﺎﺩﺎ ﻛﻘﻴﻤﺔ ﻣﺮﲡﻌﺔ ﻣﻦ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻮ ﳍﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻭﺳﻴﻄﲔ:
dataType
ﻫﺬﺍ ﺍﻟﻮﺳﻴﻂ ﳛﺪﺩ ﻧﻮﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﱵ ﺳﻴﺘﻢ ﺇﺭﺟﺎﻋﻬﺎ ﻣﻦ ﺍﳌﺨﺪﻡ ,ﻭﰲ ﺣﺎﻝ ﱂ ﻳﺘﻢ ﲢﺪﻳﺪ ﻗﻴﻤﺔ ﳍﺬﺍ ﺍﻟﻮﺳﻴﻂ
ﻓﺈﻥ jQueryﺳﺘﻤﺮﺭ ﺇﻣﺎ responseXMLﺃﻭ responseTextﺇﱃ ﺗﺎﺑﻊ ﺍﻻﺳﺘﺪﻋﺎﺀ ﺍﻟﻌﻜﺴﻲ ﺍﻟﺬﻱ ﻳﻌﱪ
ﻋﻨﻪ ﺑﺎﻟﻮﺳﻴﻂ successﺍﻋﺘﻤﺎﺩﹰﺍ ﻋﻠﻰ ﻧﻮﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﱵ ﺃﻋﺎﺩﻫﺎ ﺍﳋﺎﺩﻡ ﻭﺍﻷﻧﻮﺍﻉ ﺍﳌﻤﻜﻨﺔ ﻫﻲ:
global
ﻗﻴﻤﺔ ﻫﺬﺍ ﺍﻟﻮﺳﻴﻂ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﺗﺴﺎﻭﻱ trueﻭﲢﺪﺩ ﻫﺬﻩ ﺍﻟﻘﻴﻤﺔ ﺇﻥ ﻛﺎﻥ ﺳﻴﺘﻢ ﻗﺪﺡ ﺃﺣﺪﺍﺙ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﻐﲑ
ﻣﺘﺰﺍﻣﻨﺔ ﻟﺘﻨﻔﻴﺬ ﺍﻟﺘﺎﺑﻊ ajaxﻣﺜﻞ ﺍﻟﺘﺎﺑﻊ ajaxStartﻭ ajaxStopﻭﻏﲑﻫﺎ ﻣﻦ ﺍﻟﺘﻮﺍﺑﻊ ﺍﻟﱵ ﺗﻨﺪﺭﺝ ﲢﺖ Ajax
.Events
ifModified
ﻫﺬﻩ ﺍﻟﻘﻴﻤﺔ ﺗﺴﻤﺢ ﻟﻠﻄﻠﺐ ﺑﺎﻟﻨﺠﺎﺡ ﻓﻘﻂ ﰲ ﺣﺎﻟﺔ ﺃﻥ ﻗﻴﻤﺔ ﺍﻟﻨﺘﻴﺠﺔ ﳐﺘﻠﻔﺔ ﻋﻦ ﺁﺧﺮ ﻧﺘﻴﺠﺔ ﰎ ﺍﳊﺼﻮﻝ ﻋﻠﻴﻪ
ﻭﺫﻟﻚ ﺑﻔﺤﺺ ﻗﻴﻤﺔ Last-Modifiedﰲ ﺍﻟﺘﺮﻭﻳﺴﺔ ﺍﳋﺎﺻﺔ ﺑﺎﻟﻨﺘﻴﺠﺔ ﻭﺍﻟﻘﻴﻤﺔ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﺗﺴﺎﻭﻱ falseﺃﻱ ﲡﺎﻫﻞ
ﺍﻟﺘﺮﻭﻳﺴﺔ .Last-Modified
jsonp
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﻮﺳﻴﻂ ﻟﺘﺠﺎﻭﺯ ﺍﺳﻢ ﺗﺎﺑﻊ ﺍﻻﺳﺘﺪﻋﺎﺀ ﺍﻟﻌﻜﺴﻲ ﻋﻨﺪ ﺗﻨﻔﻴﺬ ﻃﻠﺐ ,jsonpﺣﻴﺚ ﺳﻴﺘﻢ
ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﻩ ﺍﻟﻘﻴﻤﺔ ﺑﺪ ﹰﻻ ﻣﻦ callbackﰲ ﺍﻟﺼﻴﻐﺔ "?= "callbackﰲ ﺍﻟـ URLﺍﻟﺬﻱ ﺳﻴﺘﻢ ﺗﻨﻔﻴﺬﻩ ﺳﻮﺍﺀ
ﺑﺎﺳﺘﺨﺪﺍﻡ GETﺃﻭ POSTﻭﺍﻟﻨﺘﻴﺠﺔ ﻫﻲ ﺃﻥ }' {jsonp:'onJsonPLoadﺳﺘﺼﺒﺢ
"?=."onJsonPLoad
processData
ﺑﺸﻜﻞ ﺍﻓﺘﺮﺍﺿﻲ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﱵ ﻳﺘﻢ ﺇﺭﺳﺎﳍﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﳋﻴﺎﺭ dataﻋﻠﻰ ﺷﻜﻞ ﻛﺎﺋﻦ )ﺑﺸﻜﻞ ﺗﻘﲏ ﺃﻱ ﺷﻲﺀ
ﻣﺎﻋﺪﺍ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻨﺼﻴﺔ( ﺳﺘﺘﻢ ﻣﻌﺎﳉﺘﻬﺎ ﻭﲢﻮﻳﻠﻬﺎ ﻟﻜﻲ ﺗﺮﺳﻞ ﻋﻦ ﻃﺮﻳﻖ query stringﺑﺸﻜﻞ ﻳﺘﻨﺎﺳﺐ ﻣﻊ ﻧﻮﻉ
ﺍﶈﺘﻮﻯ ﺍﻻﻓﺘﺮﺍﺿﻲ " ,"application/x-www-form-urlencodedﻭﰲ ﺣﺎﻝ ﻭﺟﻮﺩ ﺿﺮﻭﺭﺓ ﻹﺭﺳﺎﻝ
ﻛﺎﺋﻦ DOMDocumentﺃﻭﺃﻱ ﺑﻴﺎﻧﺎﺕ ﻏﲑ ﻣﻌﺎﳉﺔ ﻋﻨﺪﻫﺎ ﳚﺐ ﺗﻌﻴﲔ ﻗﻴﻤﺔ falseﳍﺬﺍ ﺍﳋﻴﺎﺭ.
scriptCharset
ﻳﺘﻢ ﺃﺧﺬ ﻗﻴﻤﺔ ﻫﺬﺍ ﺍﳋﻴﺎﺭ ﺑﺎﻻﻋﺘﺒﺎﺭ ﻓﻘﻂ ﻋﻨﺪ ﺗﻨﻔﻴﺬ ﻃﻠﺐ jsonpﺃﻭ ﺗﻜﻮﻥ ﻗﻴﻤﺔ ﺍﳋﻴﺎﺭ dataType
ﺗﺴﺎﻭﻱ scriptﻭﻳﺘﻢ ﺗﻨﻔﻴﺬ ﺍﻟﻄﻠﺐ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻤﻠﻴﺔ ,GETﻓﺈﻥ ﻗﻴﻤﺔ ﻫﺬﺍ ﺍﳋﻴﺎﺭ ﲢﺪﺩ ﻧﻮﻉ ﺍﶈﺎﺭﻑ ﺍﻟﱵ ﺳﻴﺘﻢ
ﺗﻔﺴﲑ ﺍﻟﻄﻠﺐ ﻋﻠﻰ ﺃﺳﺎﺳﻬﺎ ﻭﻳﺘﻢ ﲢﺪﻳﺪﻫﺎ ﻓﻘﻂ ﻣﻦ ﺃﺟﻞ ﺍﻟﺘﻮﻓﻴﻖ ﺑﲔ ﺍﶈﺎﺭﻑ ﰲ ﺍﶈﺘﻮﻯ ﺍﻟﺒﻌﻴﺪ ﻭﺍﶈﺘﻮﻯ ﺍﶈﻠﻲ.
success
ﺍﺳﻢ ﺍﻟﺘﺎﺑﻊ ﺍﻟﺬﻱ ﺳﻴﺘﻢ ﺗﻨﻔﻴﺬﻩ ﺇﺫﺍ ﰎ ﺗﻨﻔﻴﺬ ﺍﻟﻄﻠﺐ ﺑﺸﻜﻞ ﻧﺎﺟﺢ ,ﻭﳍﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻭﺳﻴﻄﲔ ﳘﺎ:
• ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﳌﻌﺎﺩﺓ ﻣﻦ ﺍﳋﺎﺩﻡ ﻭﺍﻟﱵ ﲤﺖ ﺇﻋﺎﺩﺎ ﻋﻠﻰ ﺣﺴﺐ ﺍﻟﻘﻴﻤﺔ ﺍﶈﺪﺩﺓ ﺑﺎﳋﻴﺎﺭ .dataType
• ﻗﻴﻤﺔ ﻧﺼﻴﺔ ﺗﻌﱪ ﻋﻦ ﺣﺎﻟﺔ ﺍﻟﻄﻠﺐ.
timeout
ﲢﺪﻳﺪ ﻗﻴﻤﺔ ﻣﺪﺓ ﻗﻄﻊ ﺍﻻﺗﺼﺎﻝ ﻗﺒﻞ ﺍﺳﺘﺠﺎﺑﺔ ﺍﳋﺎﺩﻡ timeoutﻟﻠﻄﻠﺐ ﺍﳊﺎﱄ ,ﺣﻴﺚ ﺃﻥ ﲢﺪﻳﺪ ﻗﻴﻤﺔ ﺍﳋﻴﺎﺭ
timeoutﺳﺘﺆﺩﻱ ﺇﱃ ﲡﺎﻭﺯ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻌﺎﻣﺔ ﺍﶈﺪﺩﺓ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﺎﺑﻊ .$.ajaxSetup
type
ﳛﺪﺩ ﻫﺬﺍ ﺍﳋﻴﺎﺭ ﻃﺮﻳﻘﺔ ﺗﻨﻔﻴﺬ ﺍﻟﻄﻠﺐ ) (POST, GETﻭﺍﻟﻘﻴﻤﺔ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﻫﻲ GETﻣﻊ ﺍﻟﻌﻠﻢ ﺃﻧﻪ
ﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻃﺮﻕ ﺃﺧﺮﻯ ﻣﺜﻞ PUT, DELETEﻭﻟﻜﻨﻬﺎ ﻏﲑ ﻣﺪﻋﻮﻣﺔ ﻣﻦ ﻗﺒﻞ ﺍﳌﺘﺼﻔﺤﺎﺕ ﻧﻔﺴﻬﺎ.
url
ﻋﻨﻮﺍﻥ ﺍﻟﺼﻔﺤﺔ ﺍﻟﱵ ﺳﻴﺘﻢ ﻃﻠﺒﻬﺎ.
username
ﺍﺳﻢ ﺍﻟﺪﺧﻮﻝ ﺍﻟﺬﻱ ﺳﻴﺘﺨﺪﻡ ﰲ ﺣﺎﻝ ﻭﺟﻮﺩ ﺿﺮﻭﺭﺓ ﻟﻠﺘﻮﺛﻴﻖ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﱪﻭﺗﻮﻛﻮﻝ .HTTP
أمثلة
ﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﲢﻤﻴﻞ ﻣﻠﻒ JavaScriptﻭﺗﻨﻔﻴﺬﻩ ﻣﺒﺎﺷﺮﺓ:
ﺃﻣﺎ ﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻓﻴﺘﻢ ﺇﺭﺳﺎﻝ ﺑﻌﺾ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺇﱃ ﺍﳋﺎﺩﻡ ﻣﻊ ﺇﻋﻼﻡ ﺍﳌﺴﺘﺨﺪﻡ ﰲ ﺣﺎﻝ ﺍﻧﺘﻬﺎﺀ ﺍﻟﻌﻤﻠﻴﺔ ﺑﻨﺠﺎﺡ:
ﺃﻣﺎ ﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻓﻴﺘﻢ ﲢﻤﻴﻞ ﺑﻌﺾ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻣﻦ ﺍﳋﺎﺩﻡ ﺑﺸﻜﻞ ﻣﺘﺰﺍﻣﻦ ﳑﺎ ﻳﻌﲏ ﺗﻮﻗﻒ ﺍﳌﺘﺼﻔﺢ ﻋﻦ ﺍﻻﺳﺘﺠﺎﺑﺔ ﺣﱴ
ﺍﻻﻧﺘﻬﺎﺀ ﻣﻦ ﺗﻨﻔﻴﺬ ﺍﻟﻄﻠﺐ:
ﻭﺃﺧﲑﹰﺍ ﰲ ﻫﺬﺍ ﺍﳌﺜﺎﻝ ﻳﺘﻢ ﺇﺭﺳﺎﻝ ﻗﻴﻤﺔ ﺇﱃ ﺍﳋﺎﺩﻡ ﻭﺇﻋﻼﻡ ﺍﳌﺴﺘﺨﺪﻡ ﰲ ﺣﺎﻝ ﺍﻻﻧﺘﻬﺎﺀ ﻣﻦ ﺗﻨﻔﻴﺬ ﺍﻟﻌﻤﻠﻴﺔ:
ﺃﻣﺎ ﰲ ﺍﳌﺜﺎﻝ ﺍﻷﺧﲑ ﻓﻴﺘﻢ ﲤﺮﻳﺮ ﺍﻟﻘﻴﻤﺔ limitﺗﺴﺎﻭﻱ 25ﺇﱃ ﺍﻟﺼﻔﺤﺔ feeds.phpﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻤﻠﻴﺔ POST
ﻭﺑﻌﺪ ﺍﻧﺘﻬﺎﺀ ﻣﻦ ﺗﻨﻔﻴﺬ ﺍﻟﺘﺎﺑﻊ loadﻳﺘﻢ ﺗﻨﻔﻴﺬ ﺍﻟﺘﺎﺑﻊ :callback
ﺃﻣﺎ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻓﻴﺘﻢ ﲢﻤﻴﻞ ﲨﻴﻊ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﻼﺋﺤﺔ ﺍﻟﱵ ﻗﻴﻤﺔ ﺍﻟﻮﺍﺻﻔﺔ idﳍﺎ ﺗﺴﺎﻭﻱ jq-p-Getting-Started
ﺿﻤﻦ ﻻﺋﺤﺔ ﰲ ﺍﻟﺼﻔﺤﺔ ﺍﳊﺎﻟﻴﺔ ﻗﻴﻤﺔ ﺍﻟﻮﺍﺻﻔﺔ idﳍﺎ ﺗﺴﺎﻭﻱ :links
• .xml
• .html
• .script
• .json
• .jsonp
• .text
ﺃﻣﺎ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻓﻬﻮ ﺷﺒﻴﻪ ﻟﻠﻤﺜﺎﻝ ﺍﻟﺴﺎﺑﻖ ﻣﻊ ﻭﺟﻮﺩ ﻓﺎﺭﻕ ﻭﻫﻮ ﲤﺮﻳﺮ ﻭﺳﻄﺎﺀ ﻋﻨﺪ ﺍﺳﺘﺪﻋﺎﺀ ﺍﻟﺘﺎﺑﻊ:
• :urlﻋﻨﻮﺍﻥ ﺍﻟﺼﻔﺤﺔ ﺍﻟﱵ ﺳﻴﺘﻢ ﺗﻨﻔﻴﺬﻫﺎ ﻭﻣﻦ ﺍﳌﻤﻜﻦ ﺃﻥ ﺗﻜﻮﻥ ﻋﻠﻰ ﻧﻔﺲ ﺍﻟﻨﻄﺎﻕ ﺃﻭ ﻧﻄﺎﻕ ﺁﺧﺮ.
• :dataﻭﺳﻴﻂ ﺍﺧﺘﻴﺎﺭﻱ ﻳﺘﺄﻟﻒ ﻣﻦ ﳎﻤﻮﻋﺔ ﻣﻦ ﺃﺯﻭﺍﺝ ﺍﳌﻔﺎﺗﻴﺢ ﻭﺍﻟﻘﻴﻢ.
• :callbackﺗﺎﺑﻊ ﺍﺳﺘﺪﻋﺎﺀ ﻋﻜﺴﻲ ﺳﻴﺘﻢ ﺗﻨﻔﻴﺬﻩ ﻋﻨﺪ ﺍﻻﻧﺘﻬﺎﺀ ﻣﻦ ﺗﻨﻔﻴﺬ ﺍﻟﺘﺎﺑﻊ getJSONﺑﺸﻜﻞ ﻧﺎﺟﺢ,
ﻭﳍﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻭﺳﻴﻄﲔ:
:data oﻭﻫﻲ ﺑﻴﺎﻧﺎﺕ ﺑﺼﻴﻐﺔ JSON
:textStatus oﻗﻴﻤﺔ ﻧﺼﻴﺔ ﳍﺎ ﺇﺣﺪﻯ ﺍﻟﻘﻴﻢ ﺍﻟﺘﺎﻟﻴﺔ:
timeout
error
notmodified
success
parsererror
)]jQuery.getScript(url, [callback
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﺘﺤﻤﻴﻞ ﻭﺗﻨﻔﻴﺬ ﻣﻠﻒ JavaScriptﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻤﻠﻴﺔ ,GETﻭﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﻪ
ﻭﺳﻴﻄﲔ ﳘﺎ:
• :urlﻣﺴﺎﺭ ﻣﻠﻒ ﺍﻟـ JavaScriptﻭﳝﻜﻦ ﺃﻥ ﻳﻜﻮﻥ ﻫﺬﺍ ﺍﳌﺴﺎﺭ ﻋﻠﻰ ﻧﻔﺲ ﺍﻟﻨﻄﺎﻕ ﺃﻭ ﻋﻠﻰ ﻧﻄﺎﻕ ﺁﺧﺮ.
• :callbackﺗﺎﺑﻊ ﺍﺳﺘﺪﻋﺎﺀ ﻋﻜﺴﻲ ﺍﺧﺘﻴﺎﺭﻱ ﻳﺘﻢ ﺗﻨﻔﻴﺬﻩ ﻋﻨﺪ ﲢﻤﻴﻞ ﺍﳌﻠﻒ ﺑﺸﻜﻞ ﻧﺎﺟﺢ.
• .xml
• .html
• .script
• .json
• .jsonp
• .text
أمثلة
ﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﻃﻠﺐ ﺍﻟﺼﻔﺤﺔ test.phpﻣﻊ ﲡﺎﻫﻞ ﺍﻟﻘﻴﻤﺔ ﺍﻟﱵ ﺗﻌﻴﺪﻫﺎ ﺍﻟﺼﻔﺤﺔ:
ﺃﻳﻀﹰﺎ ﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﻃﻠﺐ ﺍﻟﺼﻔﺤﺔ test.phpﻟﻜﻦ ﻫﺬﻩ ﺍﳌﺮﺓ ﻣﻊ ﺇﺭﺳﺎﻝ ﺑﻴﺎﻧﺎﺕ ﺇﱃ ﺍﻟﺼﻔﺤﺔ ﻋﻦ ﻃﺮﻳﻖ ﺍﻟﻮﺳﻴﻂ
ﺍﻻﺧﺘﻴﺎﺭﻱ dataﻭﺃﻳﻀﹰﺎ ﻳﺘﻢ ﲡﺎﻫﻞ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﱵ ﺗﻌﻴﺪﻫﺎ ﺍﻟﺼﻔﺤﺔ:
ﺃﻳﻀﹰﺎ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺸﺒﻪ ﺍﳌﺜﺎﻝ ﺍﻟﺴﺎﺑﻖ ﻣﻊ ﻭﺟﻮﺩ ﲤﺮﻳﺮ ﻟﻠﺒﻴﺎﻧﺎﺕ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻮﺳﻴﻂ ﺍﻻﺧﺘﻴﺎﺭﻱ :data
ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﻋﺮﺽ ﺭﺳﺎﻟﺔ ﻋﻨﺪ ﺍﻻﻧﺘﻬﺎﺀ ﻣﻦ ﺗﻨﻔﻴﺬ ﻋﻤﻠﻴﺔ ﻏﲑ ﻣﺘﺰﺍﻣﻨﺔ:
)ajaxError(callback
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﳊﺪﺙ ﻟﺘﻨﻔﻴﺬ ﺍﻟﺘﺎﺑﻊ callbackﻋﻨﺪ ﺣﺪﻭﺙ ﺧﻄﺄ ﺃﺛﻨﺎﺀ ﺗﻨﻔﻴﺬ ﻋﻤﻠﻴﺔ ﻏﲑ ﻣﺘﺰﺍﻣﻨﺔ AJAX
,Requestﻭﻳﻘﺒﻞ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻭﺳﻴﻄﲔ ﳘﺎ ﻛﺎﺋﻦ ﻣﻦ ﺍﻟﻨﻮﻉ XMLHttpRequestﻭﺇﻋﺪﺍﺩﺍﺕ ﺗﻨﻔﻴﺬ ﺍﻟﻌﻤﻠﻴﺔ
ﺍﻟﻐﲑ ﻣﺘﺰﺍﻣﻨﺔ:
)ajaxSend(callback
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﳊﺪﺙ ﻟﺘﻨﻔﻴﺬ ﺍﻟﺘﺎﺑﻊ callbackﻗﺒﻞ ﺑﺪﺀ ﺗﻨﻔﻴﺬ ﺍﻟﻌﻤﻠﻴﺔ ﻏﲑ ﻣﺘﺰﺍﻣﻨﺔ ,AJAX Request
ﻭﻳﻘﺒﻞ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻭﺳﻴﻄﲔ ﳘﺎ ﻛﺎﺋﻦ ﻣﻦ ﺍﻟﻨﻮﻉ XMLHttpRequestﻭﺇﻋﺪﺍﺩﺍﺕ ﺗﻨﻔﻴﺬ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﻐﲑ ﻣﺘﺰﺍﻣﻨﺔ:
ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﻋﺮﺽ ﺭﺳﺎﻟﺔ ﻗﺒﻞ ﺑﺪﺀ ﺗﻨﻔﻴﺬ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﻐﲑ ﻣﺘﺰﺍﻣﻨﺔ:
)ajaxStart(callback
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﳊﺪﺙ ﻟﺘﻨﻔﻴﺬ ﺍﻟﺘﺎﺑﻊ callbackﻋﻨﺪ ﺍﻟﺒﺪﺀ ﺑﺘﻨﻔﻴﺬ ﺍﻟﻌﻤﻠﻴﺔ ﻏﲑ ﻣﺘﺰﺍﻣﻨﺔ AJAX
,Requestﻭﻟﻴﺲ ﳍﺬﺍ ﺍﻟﺘﺎﺑﻊ ﺃﻱ ﻭﺳﻴﻂ:
ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﻈﻬﺮ ﺭﺳﺎﻟﺔ "ﺟﺎﺭﻱ ﺍﻟﺘﺤﻤﻴﻞ" ﻋﻨﺪ ﺑﺪﺀ ﺗﻨﻔﻴﺬ ﺍﻟﻄﻠﺐ:
)ajaxStop(callback
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﳊﺪﺙ ﻟﺘﻨﻔﻴﺬ ﺍﻟﺘﺎﺑﻊ callbackﻋﻨﺪ ﺍﻻﻧﺘﻬﺎﺀ ﻣﻦ ﺗﻨﻔﻴﺬ ﺍﻟﻌﻤﻠﻴﺔ ﻏﲑ ﻣﺘﺰﺍﻣﻨﺔ AJAX
,Requestﻭﻟﻴﺲ ﳍﺬﺍ ﺍﻟﺘﺎﺑﻊ ﺃﻱ ﻭﺳﻴﻂ:
)ajaxSuccess(callback
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﳊﺪﺙ ﻟﺘﻨﻔﻴﺬ ﺍﻟﺘﺎﺑﻊ callbackﻋﻨﺪ ﺍﻻﻧﺘﻬﺎﺀ ﺑﻨﺠﺎﺡ ﻣﻦ ﺗﻨﻔﻴﺬ ﻋﻤﻠﻴﺔ ﻏﲑ ﻣﺘﺰﺍﻣﻨﺔ AJAX
,Requestﻭﻳﻘﺒﻞ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻭﺳﻴﻄﲔ ﳘﺎ ﻛﺎﺋﻦ ﻣﻦ ﺍﻟﻨﻮﻉ XMLHttpRequestﻭﺇﻋﺪﺍﺩﺍﺕ ﺗﻨﻔﻴﺬ ﺍﻟﻌﻤﻠﻴﺔ
ﺍﻟﻐﲑ ﻣﺘﺰﺍﻣﻨﺔ:
ﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﺇﻇﻬﺎﺭ ﺭﺳﺎﻟﺔ ﻋﻨﺪ ﺍﻻﻧﺘﻬﺎﺀ ﻣﻦ ﺗﻨﻔﻴﺬ ﺍﻟﻌﻤﻠﻴﺔ ﺑﻨﺠﺎﺡ:
متنوعات
)jQuery.ajaxSetup(options
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﺘﻌﻴﲔ ﺍﻹﻋﺪﺍﺩﺍﺕ ﺍﻟﻌﺎﻣﺔ ﻟﻠﻄﺒﺎﺕ ﺍﻟﻐﲑ ﻣﺘﺰﺍﻣﻨﺔ ,ﻭﺍﳋﻴﺎﺭ optionsﻫﻮ ﻋﺒﺎﺭﺓ ﻋﻦ
ﳎﻤﻮﻋﺔ ﻣﻦ ﺍﳌﻔﺎﺗﻴﺢ ﻭﺍﻟﻘﻴﻢ .ﻭﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﲢﺪﻳﺪ ﻗﻴﻤﺔ ﺍﳋﻴﺎﺭ urlﺇﱃ ﺍﻟﻘﻴﻤﺔ " "/xmlhttp/ﻣﻊ ﺇﻟﻐﺎﺀ
ﺍﻷﺣﺪﺍﺙ ﺍﻟﻌﺎﻣﺔ ﻭﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻤﻠﻴﺔ POSTﺑﺪ ﹰﻻ ﻣﻦ ﺍﻟﻌﻤﻠﻴﺔ GETﻟﺘﻨﻔﻴﺬ ﺍﻟﻄﻠﺒﺎﺕ:
)(serialize
ﻳﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﺴﻠﺴﺔ ﳎﻤﻮﻋﺔ ﻣﻦ ﺍﻟﻘﻴﻢ ﻭﲢﻮﻳﻠﻬﺎ ﺇﱃ ﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ ,ﻭﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ ﺗﺴﺘﺨﺪﻡ ﻟﺘﺠﻬﻴﺰ
ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﱵ ﺃﺩﺧﻠﻬﺎ ﺍﳌﺴﺘﺨﺪﻡ ﻹﺭﺳﺎﳍﺎ ﺇﱃ ﺍﳋﺎﺩﻡ ,ﻭﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ ﻫﻲ ﻋﻤﻠﻴﺔ ﻗﻴﺎﺳﻴﺔ ﺗﺘﻮﺍﻓﻖ ﻣﻊ ﲨﻴﻊ ﻟﻐﺎﺕ ﺍﻟﱪﳎﺔ
ﻭﻣﻨﺼﺎﺕ ﺍﻟﻌﻤﻞ .ﻭﻟﻜﻲ ﻳﻌﻤﻞ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﳚﺐ ﺃﻥ ﲢﺘﻮﻱ ﺣﻘﻮﻝ ﺍﻟﻨﻤﻮﺫﺝ ﻋﻠﻰ ﻗﻴﻤﺔ ﻟﻠﻮﺍﺻﻔﺔ name
ﻭﺇﻻ ﻓﺈﻥ ﻫﺬﺍ ﺍﻟﺘﺎﺑﻊ ﻟﻦ ﻳﻌﻤﻞ ﺑﺸﻜﻞ ﺻﺤﻴﺢ.
boxModel
ﺗﻜﻮﻥ ﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺗﺴﺎﻭﻱ trueﺇﻥ ﲤﺖ ﻋﻤﻠﻴﺔ ﺭﺳﻢ ﺍﻟﺼﻔﺤﺔ ﺃﻭ ﺍﳌﺘﺼﻔﺢ ﺑﺎﺳﺘﺨﺪﺍﻡ W3C
CSS Box Modelﻭﻫﺬﻩ ﺍﻟﻘﻴﻤﺔ ﺗﺴﺎﻭﻱ falseﰲ IE6, IE7ﻋﻨﺪﻣﺎ ﺗﻌﻤﻞ ﰲ ﰲ ﺍﻟﻨﻤﻂ Quirksﻭﺗﻜﻮﻥ
ﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺗﺴﺎﻭﻱ nullﺣﱴ ﻳﺘﻢ ﲢﻤﻴﻞ ﻛﺎﻣﻞ ﺍﻟﻮﺛﻴﻘﺔ.
cssFloat
ﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺗﺴﺎﻭﻱ trueﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ style.cssFloatﻟﻠﻮﺻﻮﻝ ﺇﱃ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻌﺎﺋﻤﺔ
ﺍﳊﺎﻟﻴﺔ ﰲ ,CSSﻭﻫﺬﻩ ﺍﻟﻘﻴﻤﺔ ﺗﺴﺎﻭﻱ falseﰲ ﲨﻴﻊ ﺇﺻﺪﺍﺭﺍﺕ IEﺣﻴﺚ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ styleFloatﺑﺪ ﹰﻻ ﻋﻦ
.cssFloat
htmlSerialize
ﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺗﺴﺎﻭﻱ trueﺇﻥ ﻛﺎﻥ ﺍﳌﺘﺼﻔﺢ ﻳﺴﻠﺴﻞ ﻋﻨﺎﺻﺮ ﺍﻟﺮﺍﺑﻂ ﻋﻨﺪ ﺍﺳﺘﺨﺪﺍﻡ ﺍﳋﺎﺻﻴﺔ
) innerHTMLﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺗﺴﺎﻭﻱ falseﰲ .(IE
leadingWhitespace
ﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺗﺴﺎﻭﻱ trueﰲ ﺣﺎﻝ ﺃﻥ ﺍﳌﺘﺼﻔﺢ ﳛﺎﻓﻆ ﻋﻠﻰ ﺍﻟﻔﺮﺍﻏﺎﺕ ﻋﻨﺪ ﺍﺳﺘﺨﺪﺍﻡ ﺍﳋﺎﺻﻴﺔ
) innerHTMLﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺗﺴﺎﻭﻱ falseﰲ IE6ﻭ .(IE8
noCloneEvent
ﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺗﺴﺎﻭﻱ trueﺇﺫﺍ ﻛﺎﻥ ﺍﳌﺘﺼﻔﺢ ﻳﻨﺴﺦ ﺗﻮﺍﺑﻊ ﺍﻻﺳﺘﺠﺎﺑﺔ ﻟﻸﺣﺪﺍﺙ ﻋﻨﺪ ﻧﺴﺦ ﺍﻟﻌﻨﺼﺮ
)ﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺗﺴﺎﻭﻱ falseﰲ ﺍﳌﺘﺼﻔﺢ .(IE
objectAll
ﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺗﺴﺎﻭﻱ trueﺇﻥ ﻛﺎﻥ ﺍﺳﺘﺪﻋﺎﺀ ﺍﻟﺘﺎﺑﻊ )'*'( getElementsByTagNameﻳﻌﻴﺪ
ﻛﻞ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻷﺣﻔﺎﺩ ﻟﻠﻌﻨﺼﺮ ﺍﳊﺎﱄ )ﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺗﺴﺎﻭﻱ falseﰲ IE7ﻭ .(IE8
opacity
ﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺗﺴﺎﻭﻱ trueﺇﻥ ﻛﺎﻥ ﺍﳌﺘﺼﻔﺢ ﻳﺴﺘﻄﻴﻊ ﺗﻔﺴﲑ opacity cssﺑﺸﻜﻞ ﺻﺤﻴﺢ )ﻗﻴﻤﺔ
ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺗﺴﺎﻭﻱ falseﰲ ﺍﳌﺘﺼﻔﺢ IEﺣﻴﺚ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺍﳌﺮﺷﺢ filterﺑﺪﻻ ﻋﻦ .(opacity
scriptEval
ﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺗﺴﺎﻭﻱ trueﺇﻥ ﻛﺎﻥ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﺎﺑﻊ appendChildﺃﻭ ﺍﻟﺘﺎﺑﻊ
createTextNodeﻹﺩﺭﺍﺝ ﻧﺺ ﻳﺆﺩﻱ ﺇﱃ ﺗﻔﺴﲑ ﻗﻴﻤﺔ ﻫﺬﺍ ﺍﻟﻨﺺ )ﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺗﺴﺎﻭﻱ falseﰲ
ﺍﳌﺘﺼﻔﺢ IEﺣﻴﺚ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ textﺑﺪ ﹰﻻ ﻣﻦ ﺫﻟﻚ(.
style
ﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺗﺴﺎﻭﻱ trueﺇﻥ ﻛﺎﻥ ﺍﺳﺘﺪﻋﺎﺀ ﺍﻟﺘﺎﺑﻊ )' getAttribute('styleﺗﻌﻴﺪ ﻗﻴﻤﺔ ﺍﻟﻮﺍﺻﻔﺔ
styleﺍﳋﻄﻴﺔ ﻟﻠﻌﻨﺼﺮ ﺍﳊﺎﱄ )ﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺗﺴﺎﻭﻱ falseﰲ ﺍﳌﺘﺼﻔﺢ IEﻭﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﳋﺎﺻﻴﺔ
cssTextﺑﺪ ﹰﻻ ﻋﻦ .(style
tbody
ﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺗﺴﺎﻭﻱ trueﺇﻥ ﻛﺎﻥ ﺍﳌﺘﺼﻔﺢ ﻳﺴﻤﺢ ﺑﺎﻟﻮﺍﲰﺔ tableﺑﺪﻭﻥ ﺍﻟﻮﺍﲰﺔ ) tbodyﻗﻴﻤﺔ
ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﰲ ﺍﳌﺘﺼﻔﺢ IEﺗﺴﺎﻭﻱ falseﺣﻴﺚ ﻳﺘﻢ ﺇﺩﺭﺍﺝ ﺍﻟﻮﺍﲰﺔ tbodyﺇﻥ ﱂ ﺗﻜﻦ ﻣﻮﺟﻮﺩﺓ(.
256 ﲨﻴﻊ ﺍﳊﻘﻮﻕ ﺗﺘﺒﻊ ﳊﻘﻮﻕ ﻣﻜﺘﺒﺔ jQuery
jQuery.browser
ﰎ ﺇﻟﻐﺎﺀ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﰲ ﺍﻹﺻﺪﺍﺭ ) 1.3ﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ jQuery.supportﺑﺪ ﹰﻻ ﻋﻨﻬﺎ( ﻭﲢﺘﻮﻱ ﻋﻠﻰ
ﺇﺷﺎﺭﺓ ﻟﻜﻞ ﻣﺘﺼﻔﺢ ,ﻭﻗﻴﻤﺘﻬﺎ ﻫﻲ ﻣﻦ navigator.userAgentﻭﺍﻟﻘﻴﻢ ﺍﳌﺘﻮﻓﺮﺓ ﻫﻲ:
• safari
• opera
• msie
• mozilla
ﻭﺗﻜﻮﻥ ﻗﻴﻤﺔ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﺟﺎﻫﺰﺓ ﻗﺒﻞ ﲢﻤﻴﻞ ﻛﺎﻣﻞ ﻋﻨﺎﺻﺮ ﺍﻟﻮﺛﻴﻘﺔ ﻟﺬﻟﻚ ﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﻹﺿﺎﻓﺔ
ﺃﺣﺪﺍﺙ ﺟﺎﻫﺰﺓ ﻟﺒﻌﺾ ﺍﳌﺘﺼﻔﺤﺎﺕ ﻓﻘﻂ.
ﺃﻣﺎ ﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻳﺘﻢ ﲢﺪﻳﺪ ﻗﻴﻤﺔ ﺍﻟﻨﻤﻂ cssﺑﻨﺎﺀ ﻋﻠﻰ ﻧﻮﻉ ﺍﳌﺘﺼﻔﺢ:
jQuery.browser.version
ﰎ ﺇﻟﻐﺎﺀ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﰲ ﺍﻹﺻﺪﺍﺭ ) 1.3ﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ jQuery.supportﺑﺪ ﹰﻻ ﻋﻨﻬﺎ( ﻭﺗﻌﻴﺪ ﻫﺬﻩ
ﺍﳋﺎﺻﻴﺔ ﺭﻗﻢ ﺍﻹﺻﺪﺍﺭ ﺍﳊﺎﱄ ﻟﻠﻤﺘﺼﻔﺢ ﺍﳊﺎﱄ ,ﻭﻣﺎﻳﻠﻲ ﺑﻌﺾ ﺍﻟﻘﻴﻢ ﺍﳋﺎﺻﺔ:
jQuery.boxModel
ﰎ ﺇﻟﻐﺎﺀ ﻫﺬﻩ ﺍﳋﺎﺻﻴﺔ ﰲ ﺍﻹﺻﺪﺍﺭ ) 1.3ﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ jQuery.supportﺑﺪ ﹰﻻ ﻋﻨﻬﺎ( ﻭﺗﻌﻴﺪ ﻫﺬﻩ
ﺍﳋﺎﺻﻴﺔ trueﺇﻥ ﻛﺎﻥ ﺍﳌﺘﺼﻔﺢ ﺍﳊﺎﱄ ﻳﺘﻢ ﻋﺮﺿﻪ ﺑﺎﺳﺘﺨﺪﺍﻡ :W3C CSS Box Model