نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • اخبار
  • یادگیری جاوا. رویدادهای ماوس جاوا اسکریپت

یادگیری جاوا. رویدادهای ماوس جاوا اسکریپت

این مقاله بر روی رویدادهای ماوس جاوا اسکریپت تمرکز خواهد کرد. این رویدادها در جاوا اسکریپت بسیار مهم هستند و در هر مرحله استفاده می شوند. ابتدا، من در مورد همه رویدادهای استاندارد ماوس به شما می گویم: ماوس، ماوس، کلیک، dblclick، mousemove، و در نهایت موس و ماوس.

رویدادهای ماوس، ماوس و کلیک کنید

هنگامی که کاربر روی یک عنصر کلیک می کند، حداقل 3 رویداد ماوس به ترتیب زیر اجرا می شود:

  1. با پایین آمدن ماوس، کاربر دکمه ماوس را روی عنصر فشار داد
  2. mouseup، کاربر دکمه ماوس را روی عنصر رها کرده است
  3. روی عنصر کلیک کنید، ماوس را پایین بیاورید و رویدادهای موس را بالا ببرید

به طور کلی، رویدادهای ماوس و ماوس از رویدادهای کلیک مفیدتر هستند. گاهی اوقات کاربر روی ماوس کلیک می کند، اما رویداد کلیک فعال نمی شود.

بیایید فرض کنیم که کاربر روی دکمه روی لینک کلیک کرده، سپس مکان نما را به سمتی برده و دکمه را رها کرده است. پیوند فقط رویداد حذف ماوس را مدیریت می کرد. زمانی که کاربر دکمه ماوس را فشار می‌دهد و سپس مکان‌نما را روی پیوند حرکت می‌دهد و دکمه را رها می‌کند، می‌توانید وضعیت مخالف را تکرار کنید. فقط رویداد mouseup فعال می شود. در موارد دیگر کلیک شلیک می شود.

به هر حال، این مشکل فقط در صورتی رخ می دهد که شما بخواهید.شما باید کنترل کننده رویداد onmousedown/up را ثبت کنید، اما در بیشتر موارد رویداد کلیک کافی است.

به خاطر داشته باشید که اگر از هشدارها استفاده کنید، مرورگر ممکن است گیج شود و ترتیب رویدادهای اجرا شده و تعداد دفعات فراخوانی آنها را از دست بدهد.

رویداد dblclick (دوبار کلیک)

رویداد dblclick بسیار کمتر از سایر رویدادهای ماوس استفاده می شود. اگر از آن استفاده می کنید، مطمئن شوید که از کنترل کننده رویداد onclick و ondblclick روی یک عنصر HTML استفاده نمی کنید. تشخیص اینکه کاربر در این مورد چه کرده است تقریبا غیرممکن است.

هنگامی که کاربر روی یک عنصر دوبار کلیک می کند، ابتدا رویداد کلیک فعال می شود و تنها سپس dblclick . استفاده از پیام های هشدار در اینجا نیز بسیار خطرناک است.

رویداد mousemove

رویداد Mousemove به خوبی کار می کند، اما باید توجه داشته باشید که رسیدگی به این نوع رویدادها ممکن است کمی طول بکشد. رویداد mousemove زمانی فعال می شود که کاربر نشانگر ماوس را یک پیکسل حرکت دهد. به نظر می رسد که هیچ چیز خاصی اتفاق نمی افتد ، اما در داخل توابع پیچیده ای وجود دارد که اجرای آنها مدت زمان طولانی را می طلبد. این ممکن است باعث ناپایداری سایت شود. بنابراین بهتر است از کنترل کننده رویداد onmousemove فقط در جایی که واقعاً به آن نیاز دارید استفاده کنید و حتماً در آینده آن را حذف کنید.

Element.onmousemove = doSomething;
// بعد
element.onmousemove = null;

رویدادهای موشواره و حذف ماوس

بیایید به یک مثال کوچک نگاه کنیم. سعی کنید ماوس خود را روی عناصری با پس‌زمینه مختلف نگه دارید. عنصر 1 باید کمی چشمک بزند زمانی که ماوس را روی آن قرار می‌دهید - این رویداد ماوس را فعال می‌کند.

عنصر شماره 1

دهانه عنصر شماره 2

با این حال، همانطور که می بینید، این رویداد زمانی که ماوس را بر روی عنصر شماره 2 نگه دارید و حتی در بازه زمانی قرار دهید نیز فعال می شود.

دلیل این رفتار این است که رویداد تنظیم شده روی عنصر اول به گره های فرزند آن نیز اعمال می شود. همه چیز بسیار واضح است، اما مشکل زمانی به وجود می‌آید که وقتی مکان‌نمای ماوس مثلاً از عنصر span به عنصر شماره 2 حرکت می‌کند، باید عملی را انجام دهیم.

"موش از کجا آمد؟" یا relatedTarget، fromElement و toElement خواص

مایکروسافت برای ذخیره این اطلاعات دو ویژگی ایجاد کرد:

  • fromElement - اشاره به عنصری دارد که ماوس از آن آمده است.
  • toElement - به عنصری که ماوس به آن رسید.

کد مرورگر متقاطع

بنابراین اگر می خواهید بدانید که ماوس با استفاده از رویداد mouseover از کجا آمده است، از اسکریپت زیر استفاده کنید:

تابع doSomething(e) (
var relTarg = e.relatedTarget || e.fromElement;
}

در مورد استفاده از رویداد mouseout (عنصری که مکان نما به آن حرکت می کند):

تابع doSomething(e) (
if (!e) var e = window.event;
var relTarg = e.relatedTarget || e.toElement;
}

موش و برگ موش

مایکروسافت راه دیگری برای حل این مشکل ارائه می دهد. آنها 2 رویداد جدید mouseenter و mouseleave ایجاد کردند. این رویدادها رفتاری مشابه با ماوس و خروج ماوس دارند. تنها تفاوت این است که رویدادها به عناصر کودک "پرش" نمی کنند. این مشکل ما را که در مثال ارائه شده به خوبی حل می کند.

خوب، این تمام چیزی است که می خواستم در مورد رویدادهای ماوس جاوا اسکریپت صحبت کنم. با کمال میل به نظرات شما پاسخ خواهم داد.

روز بخیر، مشترکین کنجکاو و مهمانان وبلاگ. امروز می‌خواهیم شما را از طریق یک بخش مفید در یک زبان برنامه‌نویسی مبتنی بر نمونه اولیه، یعنی رویداد جاوا اسکریپت موس را راهنمایی کنیم.

من از شما می خواهم که درک خوبی از رویدادهایی مانند کلیک، موس، پایین آوردن ماوس، موس و سایر موارد داشته باشید، تفاوت بین آنها را درک کنید و یاد بگیرید که چگونه از آنها برای حل مشکلات خود استفاده کنید. البته بعد از هر یک از مطالب کلیدی نظری، می توانید یک پیاده سازی نرم افزاری از مثال ها را بیابید. خوب، بیایید شروع کنیم!

تمام اطلاعات در مورد رویدادهای ماوس

برای ماوس، چندین رویداد وجود دارد که به طور کامل اعمال مختلف مکان نما در صفحه را پوشش می دهد. در میان آنها مواردی هستند که با کلیک کردن روی یک شی، شناور کردن روی آن، یا حرکت نشانگر روی یک پنجره باز فعال می شوند. همه آنها را می توان به دو گروه تقسیم کرد: رویدادهای ساده و پیچیده (ترکیب).

بیایید ساده شروع کنیم

بیایید با رویدادهای ساده شروع کنیم. فقط پنج نفر از آنها وجود دارد. برای راحتی، توضیحی در مورد هر ابزار در جدول پیوست شده در زیر قرار داده ام.

نام شرح
ماوس پایین رویداد نامگذاری شده زمانی فراخوانی می شود که یکی از دکمه های ماوس فشار داده شود اما هنوز رها نشده باشد.
موس و این یکی از قبل زمانی کار می کند که دکمه ای که قبلا نگه داشته شده آزاد شود.
ماوس بر هنگامی که مکان نما بر روی یک شی در حال پردازش قرار می گیرد، فراخوانی می شود.
ماوس کردن عملکرد خروج مکان نما از ناحیه عنصر را کنترل می کند.
حرکت ماوس هر حرکت اشاره گر بر روی یک منطقه خاص باعث ایجاد رویداد فعلی می شود.

خوب، اکنون، برای تجمیع مطالب، یک مثال را تجزیه و تحلیل می کنیم. من یک برنامه کوچک ایجاد کردم که احساسات یک شکلک را هنگام نگه داشتن نشانگر و دور کردن مکان نما تغییر می دهد.

ماوس خود را روی تصویر ببرید تا تغییر کند.

حالا آن را کنار بگذارید و تغییرات را تماشا کنید

زمان گروه بندی است

حال به سراغ دیدگاه های پیچیده می رویم. هر یک از این رویدادها شامل چندین مورد ساده است. در این حالت، تمام اجزای یک رویداد پیچیده به طور همزمان فعال نمی شوند، بلکه در یک صف قرار می گیرند. بنابراین، گاهی اوقات ممکن است چنین شرایطی را مشاهده کنید که وقتی به سرعت روی آیتم های منوی یک وب سایت کلیک می کنید، گاهی اوقات کلیک ها کار نمی کنند.

چرا؟ پاسخ به اندازه کافی ساده است.

پردازش رویداد با حداکثر سرعت مجاز انجام می شود. و در عین حال، فراموش نکنید که رویدادها به نوبه خود پردازش می شوند. این بدان معنی است که اگر روی عناصر مختلف خیلی سریع کلیک کنید، زنجیره پردازش ممکن است به طور کامل تکمیل نشود.

بنابراین، در زیر رویدادهای مرکب آمده است.

همانطور که قبلا متوجه شدید، رویدادهای پیچیده تا حدودی زندگی توسعه دهندگان را ساده می کند، از جمله مجموعه ای از رویدادهای ساده ضروری به طور همزمان. در نتیجه، امروزه هیچ کس نمی تواند پردازش معمول دکمه ها یا عناصر دیگر را بدون همان تصور کند کلیک.

برای آشنایی عملی با عملکرد رویدادهای فوق، برنامه قبلی را اصلاح کردم. نتیجه کار من را تجزیه و تحلیل کنید.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 مثالی از قرار دادن ماوس روی یک عنصر صفحه

مثالی از قرار دادن ماوس روی یک عنصر صفحه

همانطور که می بینید، همه چیز بسیار ساده است. این عناصر به راحتی در کد فراخوانی می شوند و به اقدامات خاص متصل می شوند.

رویدادهای جی کوئریکمک به تعاملی شدن صفحات وب با پاسخ دادن به اقدامات ساده کاربر. رویدادها بیانگر لحظه دقیقی هستند که در آن چیزی اتفاق می افتد، مانند کلیک ماوس.

لحظه ای که در آن یک رویداد رخ می دهد نامیده می شود ایجاد یک رویداد. رویدادها می توانند هنگام انجام عملیات مختلف در یک صفحه وب فعال شوند. علاوه بر این، مرورگر خود می تواند به منبع رویدادها تبدیل شود.

کنترل یک صفحه وب با رویدادهای jQuery

1. رویدادهای ماوس

.کلیک()
این رویداد با فشار دادن و رها کردن دکمه ماوس فعال می شود. برای پیوندها، تصاویر، دکمه ها، پاراگراف ها، بلوک ها و غیره اعمال می شود.

.dblclick()
این رویداد زمانی فعال می شود که دکمه ماوس را دوبار کلیک کرده و رها می کنید، برای مثال، زمانی که یک پوشه را در دسکتاپ خود باز می کنید.

.mousedown()
این رویداد زمانی رخ می دهد که دکمه ماوس فشار داده می شود، مانند هنگام کشیدن عناصر.

.mousemove()
زمانی که ماوس را روی صفحه می‌برید، رویداد فعال می‌شود.

.mouseout()
این رویداد زمانی فعال می شود که ماوس را از عنصر دور می کنید.

.ماوس بر()
این رویداد زمانی فعال می‌شود که ماوس را بر روی یک عنصر قرار می‌دهید (شبیه به استفاده از کلاس شبه :hover).

mouseup()
این رویداد با رها کردن دکمه ماوس فعال می شود.

2. رویدادهای سند/پنجره

.بار()
این رویداد زمانی فعال می‌شود که مرورگر همه فایل‌های صفحه وب را بارگیری کند: فایل‌های html، فایل‌های css خارجی و جاوا اسکریپت، فایل‌های رسانه. اگر صفحه وب حاوی تعداد زیادی فایل باشد، ممکن است ناخوشایند باشد. برای حل این مشکل، می توانید از تابع ()read که بلافاصله پس از بارگذاری کد html، اسکریپت ها را اجرا می کند، استفاده کنید.

.resize()
این رویداد با تغییر اندازه پنجره مرورگر فعال می شود.

.طومار()
این رویداد زمانی فعال می‌شود که از نوارهای پیمایش استفاده می‌کنید، صفحه وب را با چرخ ماوس پیمایش می‌کنید، یا از کلیدهای صفحه‌کلید (pg up، pg dn، home، end) برای این کار استفاده می‌کنید.

.unload()
این رویداد زمانی فعال می‌شود که می‌خواهید با کلیک روی پیوندی برای رفتن به صفحه دیگر، بستن برگه صفحه یا بستن پنجره مرورگر، صفحه‌ای را ترک کنید.

3. رویدادها را شکل دهید

.blur()
این رویداد زمانی فعال می شود که فیلد فرم از فوکوس خارج شود، یعنی. شما داده ها را در یک فیلد فرم وارد کرده و به یکی دیگر منتقل شده اید.

.تغییر دادن()
این رویداد زمانی فعال می شود که وضعیت یک فیلد فرم تغییر کند، مانند انتخاب یک مورد از یک منوی کشویی.

.تمرکز()
این رویداد زمانی فعال می‌شود که با کلیک کردن روی دکمه ماوس یا کلید تب در آن، به فیلد فرم بروید.

.reset()
این رویداد به شما امکان می دهد تا فرم را به حالت اولیه خود بازگردانید و تغییرات ایجاد شده را لغو کنید.

.انتخاب کنید()
این رویداد زمانی فعال می شود که متنی را در قسمت متن فرم انتخاب کنید.

.ارسال()
این رویداد زمانی فعال می شود که با کلیک بر روی دکمه ارسال یا فشار دادن کلید Enter در حالی که مکان نما در کادر متنی است، فرم تکمیل شده را ارسال می کنید.

4. رویدادهای صفحه کلید

keydown ()
این رویداد با فشردن یک کلید، قبل از رویداد فشار کلید، فعال می شود.

.فشردن کلید()
این رویداد زمانی فعال می شود که یک کلید را فشار دهید تا زمانی که کلید را رها کنید.

.keyup()
زمانی که کلیدی را رها می کنید، رویداد فعال می شود.

5. رویدادهای جی کوئری

.hover()
این تابع به عنوان یک رویداد عمل می کند و به شما امکان می دهد همزمان دو وظیفه مرتبط با رویداد ماوس و رویداد موس را روی شی انتخاب شده حل کنید. ساختار عملکرد اصلی:
$("#selector").hover(function1, function2);

.تغییر وضعیت()
رویداد مشابه رویداد hover() عمل می کند، با این تفاوت که رویداد با کلیک ماوس راه اندازی می شود. به عنوان مثال، می توانید یک منوی کشویی را با یک کلیک باز کنید و با یک ثانیه آن را پنهان کنید.

6. شی رویداد

هنگامی که یک رویداد فعال می شود، مرورگر اطلاعات مربوط به آن را در آن ذخیره می کند شی رویداد. شی رویداد حاوی داده های جمع آوری شده در زمان وقوع رویداد است. رویداد با استفاده از یک تابع پردازش می شود، در حالی که شی به عنوان یک آرگومان به تابع منتقل می شود - متغیر evt (شما همچنین می توانید از رویداد یا فقط e به عنوان نام متغیر استفاده کنید). برای دسترسی به یک آرگومان، باید یک نام پارامتر به تابع اضافه کنید. در یک تابع داده شده، می توانید با استفاده از دستور نقطه به ویژگی های مختلف دسترسی پیدا کنید. هنگامی که تابع فراخوانی می شود، شی رویداد در متغیر evt ذخیره می شود.
شی رویداد دارای ویژگی های مختلفی است که رایج ترین آنها در جدول زیر توضیح داده شده است.

جدول 1. ویژگی های شی رویداد
ویژگی شرح
صفحهX فاصله (px) از نشانگر ماوس تا لبه چپ پنجره مرورگر
صفحهY فاصله (px) از نشانگر ماوس تا لبه بالای پنجره مرورگر
screenX فاصله (px) از نشانگر ماوس تا لبه چپ مانیتور
صفحه نمایشY فاصله (px) از نشانگر ماوس تا لبه بالایی مانیتور
shiftKey اگر هنگام وقوع رویداد، کلید SHIFT فشار داده شود، درست است
که برای تعیین کد عددی کلید فشار داده شده (همراه با shiftKey) استفاده می شود.
هدف نشان می دهد که دکمه ماوس روی شی رویداد کلیک شده است (به عنوان مثال برای رویداد () click)
داده ها شیئی که با تابع bind() برای ارسال داده به تابعی که رویداد را مدیریت می کند استفاده می شود

ما به یادگیری jQuery ادامه می دهیم و اکنون بیایید مطالعه بخشی مانند مدیریت رویداد در jQuery را شروع کنیم.

رویدادهای مستند
هنگامی که یک کاربر با یک صفحه وب در تعامل است، رویدادهایی رخ می دهد. رویدادها نوعی اعلان به سیستم هستند مبنی بر اینکه کاربر عملی را انجام داده یا شرایطی در خود سیستم رخ داده است. رویدادها در نتیجه کلیک کردن روی یک عنصر، حرکت ماوس، فشار دادن یک کلید روی صفحه کلید، تغییر اندازه یک پنجره، پایان بارگیری یک صفحه وب و غیره فعال می شوند. با دانستن اینکه یک عنصر خاص از یک صفحه وب چه رویدادهایی می تواند ایجاد کند، می توانید یک تابع برای مدیریت این رویداد بنویسید. به عنوان مثال، هنگام ارسال داده های فرم، رویداد onsubmit فعال می شود. هنگامی که این رویداد رخ می دهد، می توانید داده های وارد شده توسط کاربر را تأیید کنید و اگر با آنچه شما انتظار دارید مطابقت نداشت، ارسال داده ها را متوقف کنید.

در همان ابتدای کتاب، امکان اجرای اسکریپت‌ها بلافاصله پس از شکل‌گیری ساختار سند، بدون انتظار برای بارگذاری سایر عناصر را در نظر گرفتیم. همانطور که می دانید، می توانید این رویداد را با استفاده از روش آماده () مدیریت کنید.


alert("سند برای اجرای اسکریپت موجود است");
});

اگر فقط پس از بارگیری کامل خود سند HTML و همچنین سایر عناصر (مثلاً تصاویر) نیاز به انجام برخی اقدامات دارید، می توانید از روش بارگذاری () استفاده کنید. سینتکس روش به شرح زیر است.

بارگذاری (عملکرد پاسخ به تماس)

تابع<Название функции>([شیء رویداد]) (
// ...
}

پس از بارگیری کامل صفحه وب، پیام تأیید و نوع رویداد را نمایش خواهیم داد.

$(window).load(تابع(ها) (
alert ("سند به طور کامل بارگیری شده است");
alert("نوع رویداد" + e.type);
});

در نتیجه اجرا دو پیام دریافت خواهیم کرد.

سند به طور کامل بارگذاری شده است
نوع رویداد بارگیری

روش unload () برای انجام هر عملی بلافاصله قبل از تخلیه سند در نظر گرفته شده است. این روش دارای نحو زیر است.
تخلیه (عملکرد پاسخ به تماس)

پارامتر تابع Callback ارجاع به تابعی با فرمت زیر را مشخص می کند.

تابع<Название функции>([<Объект event>]) {
// ...
}
نمایش یک پیام قبل از تخلیه سند.
$(window).unload(function()
( هشدار("بیا داخلهنوز!");
});

در این بخش، دو روش مفید دیگر را بررسی خواهیم کرد.

تغییر اندازه (عملکرد پاسخ به تماس) - زمانی که اندازه پنجره تغییر می کند اجرا می شود.

اسکرول (عملکرد برگشت به تماس) - زمانی که محتوای یک عنصر صفحه، سند، پنجره یا قاب پیمایش می شود اجرا می شود.

پارامتر تابع Callback ارجاع به تابعی با فرمت زیر را مشخص می کند.
نام تابع تابع ([شیء رویداد]) (
// ...
}

می توانید پیمایش محتوای پنجره را پردازش کنید و پیامی مانند این را نمایش دهید.
$(window).scroll(function() (
alert("محتوای پنجره پیمایش");
});

به عنوان مثالی از استفاده از متد resize()، عرض و ارتفاع پنجره را پس از تغییر اندازه دریافت می کنیم (فهرست 6.1).

لیست 6.1. نمایش عرض و ارتفاع پنجره هنگام تغییر اندازه



نمایش عرض و ارتفاع پنجره در صورت تغییر</i><br><i>اندازه</i><i>





هنگامی که اندازه پنجره تغییر می کند، عنصر divl عرض و ارتفاع پنجره را نمایش می دهد.

روش خطا (Callback Function) زمانی فراخوانی می شود که خطایی در صفحه یا کد جاوا اسکریپت وجود داشته باشد. پارامتر تابع Callback ارجاع به تابعی با فرمت زیر را مشخص می کند.

نام تابع تابع ([پیام[، URL[، شماره خط]]])(
// ...
}

اگر خطا در شی پنجره رخ داده باشد، سه پارامتر در تابع callback در دسترس خواهد بود:

پیام - متنی که خطا را توصیف می کند.
URL - URL کامل سند با خطا؛
شماره خط - شماره خط با خطا.

برای پنهان کردن خطاهای جاوا اسکریپت از کاربران، مقدار true را در داخل تابع callback برگردانید.

$(window).error(function()(
بازگشت درست؛
});

با استفاده از روش error() می توانید خطای بارگذاری تصویر را مدیریت کنید.

$("img").error(function() (
$(this).attr("src", "noimage.gif");
});

توجه داشته باشید
برای اینکه این مثال به درستی کار کند، باید اسکریپت را روی سرور قرار دهید. در غیر این صورت، رویداد ترتیب اثر داده نخواهد شد.

رویدادهای ماوس در جی کوئری

روش های زیر برای مدیریت رویدادهای ماوس در جی کوئری ارائه شده است.

کلیک ([Callback Function]) - زمانی اجرا می شود که یک عنصر یا صفحه وب کلیک شود. اگر پارامتر مشخص نشده باشد، یک کلیک روی عنصر شبیه سازی می شود. قبل از رویداد onclick دو رویداد وجود دارد: onmousedown و onmouseup. پس از کلیک بر روی هر دکمه، یک پیام نمایش داده شود.
$("ibutton").click(function() (
});

Toggle() - به شما امکان می دهد تا زمانی که روی یک عنصر یا صفحه وب کلیک می کنید، بین چندین عملکرد متناوب کنید. توابع به نوبه خود فراخوانی می شوند. اولین کلیک تابع اول، کلیک دوم تابع دوم و کلیک سوم تابع سوم را فراخوانی می کند. اگر تابع سوم تعریف نشده باشد، تابع اول دوباره فراخوانی می شود و به همین ترتیب. متد toggle() فرمت زیر را دارد.
تغییر وضعیت(<Функция обратного вызова 1>,
<Функция обратного вызова 2>[,
<Функция обратного вызова N>])

بیایید رنگ متن پاراگراف را بعد از هر کلیک ماوس تغییر دهیم.
$("p"). toggle
(تابع() (
$(this).css("رنگ"، "قرمز");
تابع() (
$(this).css("رنگ"، "آبی");
تابع() (
$(this).css("رنگ"، "سبز");
}
) .کلیک()؛

سعی کنید چند بار روی پاراگراف کلیک کنید. رنگ متن به ترتیب از قرمز به آبی، از آبی به سبز، دوباره از سبز به قرمز تغییر می کند. به خط آخر مثال توجه کنید. پس از اختصاص‌دهنده رویداد، رویداد onclick با متد ()click بدون هیچ پارامتری اجرا می‌شود. به همین دلیل رنگ پاراگراف از همان ابتدا قرمز خواهد بود.

Dblclick([Callback Function]) - زمانی اجرا می شود که یک عنصر یا صفحه وب دوبار کلیک شود. اگر پارامتر مشخص نشده باشد، یک دوبار کلیک روی عنصر شبیه سازی می شود. قبل از رویداد ondblclick سه رویداد وجود دارد: onmousedown، onmouseup و onclick. هنگامی که روی هر پاراگراف دوبار کلیک می کنید پیامی را نمایش دهید.
$("p").dblclick(function() (
alert("شما دوبار کلیک کردید");
});

mousedown (عملکرد Callback) - زمانی که دکمه ماوس روی یک عنصر یا صفحه فشار داده می شود اجرا می شود. رویداد onmousedown قبل از رویداد onmouseup و onclick رخ می دهد.

موس (عملکرد برگشت به تماس) - زمانی اجرا می شود که دکمه قبلی ماوس را فشار داده اید آزاد کنید. رویداد onmouseup بین رویدادهای onmousedown و onclick رخ می دهد. هنگامی که روی یک پاراگراف کلیک می کنید و دکمه ماوس را رها می کنید، پیام ها را نمایش دهید.

$("p").mousedown(function() (
$("#divl").append("رویداد Onmousedown" + "
");
))موشواره(تابع() (
$("#divl").append("رویداد Onmouseup" + "
");
});
<р>مرا کلیک کن

Mousemove (عملکرد برگشت به تماس) - هر زمان که ماوس جابجا شود اجرا می شود. هنگامی که مکان نما را روی یک پاراگراف حرکت می دهید یک پیام نمایش داده شود.

$("p") .mousemove(function() (
$("#divl").append("رویداد Onmousemove" + "
");
});

ماوس (عملکرد برگشت به تماس) - زمانی اجرا می شود که نشانگر ماوس روی عنصر باشد.

mouseout (عملکرد Callback) - زمانی اجرا می شود که نشانگر ماوس عنصر را ترک می کند. زمانی که ماوس را روی لینک قرار می دهید، رنگ پیوند را قرمز کنید و پیامی را نمایش دهید و زمانی که مکان نما از لینک خارج شد، رنگ آن را به سیاه تغییر دهید و پیامی را نمایش دهید.

$("amouseover(function() (
$(this).css("رنگ"، "قرمز");
$("#divl").append("رویدادروی موشواره" + "
");

)) mouseout(function() (
$(this).css("رنگ"، "سیاه");
$("#divl").append("رویدادonmouseout" + "
");

}>;

hover() - به شما امکان می دهد شناور و شناور یک عنصر را با یک متد مدیریت کنید. فرمت زیر را دارد.
شناور (بازخوانی رویداد Onmouseover، پاسخ تماس رویداد onmouseout)

بیایید مثال قبلی خود را بازنویسی کنیم و از متد hover() استفاده کنیم.

$("a").hover(function() (
$(this).css("رنگ"، "قرمز");
$("#divl").append("رویداد Onmouseover" + "
"); },
تابع() (
$(this).css("رنگ"، "سیاه");
$("#divl").append("رویداد Onmouseout" + "
");
});

استفاده از متد hover() مزیت دیگری نیز دارد. اگر بلوک دیگری در داخل بلوک وجود داشته باشد، هنگام ورود به بلوک داخلی و همچنین هنگام خروج از آن، توابع جداگانه فراخوانی می شود. هنگام استفاده از متد ()hover، این حرکات نادیده گرفته می شوند (لیست 6.2).

لیست 6.2. ویژگی های استفاده از روش شناور()



ویژگی های استفاده از متد hover().






جداگانه، مجزاکنترل کننده ها:



خط 1

خط 2



تابعشناور ():



خط 1

خط 2




برای اولین بلوک تودرتو، کنترل‌کننده‌های رویداد جداگانه را تعریف کردیم. اگر نشانگر ماوس را روی کل بلوک در وسط حرکت دهیم، دنباله رویدادهای زیر را دریافت می کنیم.
رویداد onmouseover
رویداد onmouseout
رویداد onmouseover
رویداد onmouseout
رویداد onmouseover
رویداد onmouseout

برای دومین بلوک تودرتو، کنترل‌کننده‌های رویداد با استفاده از متد hover() اختصاص داده می‌شوند. با همین عمل فقط دو رویداد دریافت خواهیم کرد.
رویداد onmouseover
رویداد onmouseout

در تمام متدهای این بخش، ما هنوز پارامتری را که بتوان به آن‌ها منتقل کرد، مشخص نکرده است.


// ...
}

عنصری که رویداد را اجرا کرده است در داخل تابع از طریق این نشانگر قابل دسترسی است. توجه داشته باشید که این اشاره گر به عنصری در Document Object Model اشاره دارد، نه عنصری در مجموعه jQuery. اگر متغیری در پارامتر شئ رویداد مشخص شده باشد، از طریق آن می توانید به خصوصیات شی رویداد دسترسی پیدا کنید. بیایید یک کنترل کننده کلیک ماوس برای دو عنصر به طور همزمان بنویسیم. پس از کلیک کردن، نام تگ را در عنصر با id divl نمایش دهید.

$("r, div").کلیک کنید(function(e) {
$("#divl")
.append("عنصر" + e.srcElement.tagName + "
");

});

رویدادهای صفحه کلید در جی کوئری

روش های زیر برای مدیریت رویدادهای صفحه کلید در jQuery ارائه شده است.

keydown (عملکرد برگشت به تماس) - با فشار دادن یک کلید صفحه کلید اجرا می شود.

keyprcss (عملکرد برگشت به تماس) - با فشار دادن یک کلید صفحه کلید اجرا می شود. شبیه به متد ()keydown، اما مقدار کد کاراکتر را در یونیکد برمی‌گرداند. رویداد به طور مداوم فعال می شود تا زمانی که کاربر کلید را رها کند.

keyup (عملکرد برگشت به تماس) - زمانی اجرا می شود که کلید صفحه کلید قبلاً فشرده شده رها شود.

پارامتر تابع callback اشاره ای به تابعی با فرمت زیر است.

نام تابع تابع ([شیء رویداد]) (
// ...
}

اگر متغیری در پارامتر شئ رویداد مشخص شده باشد، از طریق آن می توانید به خصوصیات شی رویداد دسترسی پیدا کنید. به عنوان مثال برای دریافت کد کلیدی که فشار داده شده است می توانید از خاصیت کلید Code استفاده کنید. به عنوان مثال، ما کد کلید فشرده شده را دریافت می کنیم و دنباله رویدادها را نشان می دهیم (فهرست 6.3).

لیست 6.3. رویدادهای صفحه کلید



تحولات</i><i>صفحه کلید</i><i>








فیلد متن را برجسته کنید و هر کلیدی را در صفحه کلید فشار دهید. برای مثال، بیایید کلید A را با طرح صفحه کلید روسی فشار دهیم. در نتیجه پیام زیر را دریافت می کنیم.
کلید 70
keyprcss 1072
کلید 7 0

رویدادها را در jQuery تشکیل دهید

روش های زیر برای مدیریت رویدادهای فرم طراحی شده اند.

تمرکز ([Callback]) - زمانی اجرا می‌شود که عنصر فرم فوکوس را دریافت کند. اگر پارامتر مشخص نشده باشد، عنصر فوکوس ورودی را دریافت می کند.

blur([Callback]) - زمانی که عنصر فرم فوکوس خود را از دست می دهد فعال می شود. اگر پارامتر مشخص نشده باشد، عنصر فوکوس ورودی را از دست می دهد.

تغییر (عملکرد برگشت به تماس) - زمانی اجرا می شود که داده ها در قسمت متن تغییر می کنند و تمرکز به عنصر فرم دیگری منتقل می شود، یا زمانی که داده های فرم ارسال می شود.

ارسال ([عملکرد پاسخ به تماس]) - زمانی که داده‌های فرم ارسال می‌شوند اجرا می‌شود. اگر پارامتر مشخص نشده باشد، فرم ارسال می شود.

select([ تابع فراخوانی]) - زمانی اجرا می شود که محتوای یک عنصر انتخاب شده باشد. اگر پارامتر مشخص نشده باشد، محتوای عنصر به طور کامل انتخاب می شود.

پارامتر تابع callback اشاره ای به تابعی با فرمت زیر است.

نام تابع تابع ([شیء رویداد]) (
// ...
}

عنصری که رویداد را اجرا کرده است در داخل تابع از طریق این نشانگر قابل دسترسی است. توجه داشته باشید که این اشاره گر به عنصری در Document Object Model اشاره دارد، نه عنصری در مجموعه jQuery. اگر متغیری در پارامتر شئ رویداد مشخص شده باشد، از طریق آن می توانید به خصوصیات شی رویداد دسترسی پیدا کنید.

بیایید نحوه مدیریت رویدادهای فرم های مختلف را نشان دهیم (فهرست 6.4).



تحولات</i><i>تشکیل می دهد</i><i>










!}

id="btn2">

!}

بنابراین، ما یک فرم با سه عنصر ایجاد کرده ایم. هنگامی که یک مورد را از لیست انتخاب می کنید، پیامی با مقدار مورد انتخاب شده نمایش داده می شود. اگر فیلد متنی را انتخاب کنید، رنگ پس‌زمینه تغییر می‌کند و اگر فوکوس را از فیلد حذف کنید، رنگ پس‌زمینه به سفید تبدیل می‌شود. با کلیک بر روی دکمه ارسال، کادر محاوره ای نمایش داده می شود که به شما امکان می دهد ارسال داده های فرم را لغو کنید. در زیر فرم چهار دکمه وجود دارد. دکمه اول به شما امکان می دهد محتویات فیلد متن را انتخاب کنید. پس از انتخاب، پیامی در مورد انتخاب قطعه نمایش داده می شود، زیرا ما کنترل کننده مناسب را تعریف کرده ایم. اگر قطعه ای را در فیلد با ماوس انتخاب کنید، می توانید همان پیام را دریافت کنید. دکمه دوم به شما امکان می دهد فوکوس ورودی را روی قسمت متن تنظیم کنید و دکمه سوم - برای حذف آن. و در نهایت دکمه چهارم برای ارسال اطلاعات فرم است. با کلیک بر روی این دکمه کادر محاوره ای برای تایید ارسال داده ها نمایش داده می شود.

کنترل کننده های رویداد عمومی در jQuery

در بخش‌های قبلی، به کنترل‌کننده‌های رویداد خاص نگاه کردیم. کتابخانه jQuery همچنین به شما اجازه می دهد تا با یک متد به رویدادهای مختلف (از جمله رویدادهای خودتان) گرداننده ها را اختصاص دهید. روش های زیر برای تخصیص، فراخوانی و حذف کنترل کننده ها ارائه شده است.

Bind (نوع رویداد[، داده]، تابع Callback) - به شما امکان می دهد یک کنترل کننده به همه عناصر مجموعه اختصاص دهید. مقادیر زیر را می توان در پارامتر Event type مشخص کرد:
رویدادهای سند: بارگیری، بارگیری، تغییر اندازه، پیمایش، خطا.
رویدادهای ماوس: کلیک، dblclick، mousedown، mouseup، mousemove، mouseover، mouseout، mouseenter، mouseeleave.
رویدادهای صفحه کلید: keydown، keyprcss، keyup.
رویدادهای شکل: تمرکز، محو کردن، تغییر، انتخاب، ارسال.

ما قبلاً تقریباً همه این رویدادها را در بخش های قبلی بررسی کرده ایم. به عنوان مثال، شما می توانید یک کنترل کننده رویداد کلیک برای همه دکمه های مانند این اختصاص دهید.

$(":button") .bind("کلیک"، تابع()
(هشدار("شمافشرده شده استبر رویدکمه");
});

دو رویداد موش بررسی نشده باقی مانده است. رویداد mouseenter زمانی که نشانگر ماوس روی عنصر قرار دارد و رویداد خروج ماوس زمانی که نشانگر ماوس عنصر را ترک می‌کند فعال می‌شود. استفاده از این رویدادها با مدیریت رویدادهای ماوس و حذف ماوس متفاوت است. اگر بلوک دیگری در داخل بلوک وجود داشته باشد، پس از وارد شدن بلوک داخلی، رویداد Mouseover اجرا می‌شود و هنگام خروج، رویداد mouseout فعال می‌شود. هنگام استفاده از رویدادهای mouseenter و mouseeleave، این حرکات نادیده گرفته می شوند (فهرست 6.5).

لیست 6.5. رویدادهای mouseenter و mouseeleave



تحولات</i><i>موشواره و</i><i>برگ موش

content="text/html; charset=utf-8">





تحولاتماوس وماوس کردن:



خط 1

خط 2



تحولاتموشواره وبرگ موش:



خط 1

خط 2




برای اولین بلوک تودرتو، کنترل‌کننده‌های رویداد Mouseover و Mouseout را تعریف کردیم. اگر نشانگر ماوس را روی کل بلوک در وسط حرکت دهیم، دنباله رویدادهای زیر را دریافت می کنیم.
رویداد موس
رویداد ماوس کردن
رویداد موس
رویداد ماوس کردن
رویداد موس
رویداد ماوس کردن

دومین بلوک تودرتو دارای کنترل‌کننده‌های رویداد ماوس و برگه ماوس است. با همین عمل فقط دو رویداد بدست می آوریم.
رویداد mouseenter
رویداد برگ موش

در پارامتر نوع رویداد، ترکیبی از رویدادها که با یک فاصله از هم جدا شده اند را می توان مشخص کرد. بیایید کلاس پیوند را زمانی که نشانگر ماوس نگه داشته شده است تغییر دهیم و وقتی مکان نما خارج شد، کلاس را حذف خواهیم کرد.

$("a").bind("mouseenter mouseleave", function() (
$(this).toggleClass("clsl");
});

شما همچنین می توانید رویدادهای خود را با استفاده از متد ()bind کنید. فراخوانی رویدادهای خودتان با استفاده از روش‌های trigger () و triggerHandler () انجام می‌شود. بیایید رویداد خودمان را ایجاد کنیم و سپس آن را فراخوانی کنیم.

$("#divl").bind("myEvent", function() (
alert ("Handing event custom");
});
$("#divl"). trigger("myEvent11) ; // باعث ایجاد رویداد

پارامتر تابع callback اشاره ای به تابعی با فرمت زیر است.

نام تابع تابع ([رویداد[، آرگومان ها] ]) (
// ...
}

$ ("#divl") .bind ("myEvent11، تابع(e، msg) (

});
$("#divl").trigger("myEvent", ["پیام ما"]);

با استفاده از پارامتر اختیاری Data، می توانید مقادیر را به تابع handler ارسال کنید. برای انجام این کار، پارامترها و مقادیر ارسال شده باید به صورت زیر مشخص شوند.
{
Parameter1: "Value1"،
Parameter2: "Value2"،
پارامترها: "مقدار"
}

می توانید مقدار پارامتر پاس شده را در داخل تابع به این صورت دریافت کنید.
3value = Object event.data.Parameter

یک مثال را در نظر بگیرید.

تابع f_click(e) (
var str = "msgl = 11 + e.data.msgl + "\n";
str += "msg2 = 11 + e.data.msg2; alert(str);
بازگشت نادرست؛
}
$("a").bind(
"کلیک کنید"، // رویداد
(msgl: "Message 1", msg2: "Message 2"), // Data Our
f_click // پیوند تابع
) ;

msgl = پیام 1
msg2 = پیام 2

شما می توانید چندین کنترل کننده را به یک رویداد اختصاص دهید. در این صورت آنها به ترتیبی که تعریف شده اند فراخوانی می شوند.


هشدار ("اولکنترل کننده");
});
$("#btnl").bind("click", function() (
هشدار("دومکنترل کننده");
});

با کلیک بر روی یک عنصر با ID btnl دو پیام به ترتیب نمایش داده می شود.
اولین کنترلر
کنترل کننده دوم

One (نوع رویداد[، داده]، تابع Callback) - به شما امکان می دهد یک کنترل کننده را به تمام عناصر مجموعه اختصاص دهید. متد با bind() یکسان است، اما رویداد فقط یک بار فعال می شود، پس از آن کنترل کننده به طور خودکار حذف می شود.
$("ibutton").one("click", function()
( هشدار ("شما روی دکمه کلیک کردید");
});

پس از اولین کلیک بر روی دکمه، پیغام مشخص شده نمایش داده می شود و پس از کلیک دوم، دیگر هندلر فراخوانی نمی شود.

ماشه (نوع رویداد[، آرایه داده]) - کنترل کننده رویداد مشخص شده را فراخوانی می کند.
$(document).bind("click", function() (
// هشدار Handler("Event onclick");
});
$(document).trigger("کلیک کنید"); // با کنترل کننده تماس بگیرید

اگر آرایه ای از داده ها مشخص شده باشد، آنگاه به تابع callback در handler ارسال می شود. هر پارامتر با یک عنصر آرایه مطابقت دارد.

$("#divl").bind("myEvent", function(e, msgl, msg2) (
$("#div2") . ضمیمه ("رویدادmyEvent. " +msgl + " 11 +
msg2).append("br");
});
$("p").click(function() (
$("#divl").trigger("myEvent", ["Message1", "Message2" ]);
});

<р>اینجا را فشار دهید


در نتیجه اجرای این کد پیامی دریافت می کنیم.
رویداد myEvent. Message1 Message2

TgiggerHandleg (نوع رویداد[، آرایه داده]) - کنترل کننده رویداد مشخص شده را فراخوانی می کند. برخلاف متد trigger()، رویداد فقط در اولین عنصر مجموعه اجرا می شود. همچنین، هنگام استفاده از متد ()triggerHandleg، هیچ اقدام پیش‌فرضی وجود ندارد.
$("form").bind("ارسال"، تابع(e، msg) (
اگر (پیام) (
alert("فرم ارسال نخواهد شد." + msg);
}
دیگر(
alert ("فرم ارسال خواهد شد");
});
$(":button").bind("click", function() (
$("فرم"). triggerHandler("ارسال"، ["داده های ما"]) ;
});



در این مثال، با کلیک بر روی دکمه Invoke Handler، کنترل کننده رویداد onclick فعال می شود. در داخل handler، رویداد onsubmit را فعال می کنیم و داده های خود را ارسال می کنیم. بر اساس این داده‌ها، می‌توانیم تعیین کنیم که آیا رویداد با کلیک روی دکمه Submit فعال شده است یا اینکه به طور مصنوعی توسط ما اجرا شده است. اگر متغیر msg تعریف شده باشد، رویداد با استفاده از متد ()triggerHandler اجرا شده است. در این صورت پس از نمایش پیام، اطلاعات فرم ارسال نخواهد شد. اگر دکمه ارسال کلیک شود، متغیر msg تعریف نشده و پس از نمایش پیام، داده های فرم ارسال می شود.

Unbind([نوع رویداد[، نام تابع]]) - کنترل کننده رویداد را برای همه عناصر مجموعه حذف می کند.
$("#btnl").bind("click", function() (
هشدار ("شما روی دکمه کلیک کردید");
});
$("#btnl").unbind("click");
});


اگر نام تابع را در پارامتر دوم مشخص کنید، فقط کنترل کننده با آن نام حذف می شود.

تابع f__clickl() (
هشدار ("عملکرد f__clickl ()") ;
}
تابع f_click2() (
هشدار ("عملکرد f__click2 ()") ;
}
$("#btnl").bind("click", f_clickl); $("#btnl")
.bind("click", f_click2);
$("#btn2").bind("کلیک کنید"، تابع() (
$("#btnl").unbind("click", f_click2);
});



تابع
f_click1()
تابع
f_clJck2()

هنگامی که دکمه Delete Handler کلیک می شود، کنترل کننده رویداد به نام f_click2 حذف می شود. حال پس از کلیک بر روی دکمه اول فقط یک پیام دریافت می کنیم.
تابع f_clJck1().

اگر پارامترها مشخص نشده باشند، همه کنترل کننده ها حذف خواهند شد.
مناسبت ها. $("#btnl").unbind();

متدهای live() و die() در جی کوئری

تخصیص کنترل‌کننده‌های رویداد با متد ()bind یک اشکال مهم دارد. اگر یک کنترل کننده اختصاص دهیم و سپس عناصر جدیدی اضافه کنیم، هیچ کنترل کننده رویدادی به آن عناصر اختصاص داده نخواهد شد.

$(":button").bind("click", function() (
varhtml=` `;
$(this).after("
"+html)؛

});

در این مثال، ما یک کنترل کننده رویداد کلیک را به همه دکمه ها اختصاص داده ایم. هنگامی که یک دکمه کلیک می شود، یک دکمه جدید اضافه می شود. اگر سعی کنید روی آن کلیک کنید، هیچ تغییری رخ نخواهد داد.

متد live() برای تخصیص پویا کنترل کننده های رویداد در نظر گرفته شده است. بیایید مثال قبلی خود را بازنویسی کنیم و به جای bind() از متد live() استفاده کنیم.

$(":button").live("click", function() (
varhtml=` `;
$(this).after("
"+html)؛

});

در این صورت اگر روی دکمه new کلیک کنید دکمه دیگری ظاهر می شود. با زدن این دکمه دکمه دیگری ایجاد می شود و به همین ترتیب.

توجه داشته باشید
متد live() از jQuery 1.3 در دسترس بوده است. در نسخه های قبلی، می توانید از ماژول Live Query استفاده کنید.

متد live () دارای فرمت زیر است، live (نوع رویداد، تابع Callback)
مقادیر زیر را می توان در پارامتر Event type مشخص کرد:
رویدادهای ماوس: کلیک، dblclick، mousedown، mouseup، mouseover، mouseover، mouseout.
رویدادهای صفحه کلید: keydown، keyprcss، keyup.

همچنین می توانید رویدادهای خود را با استفاده از متد live() اختصاص دهید. فراخوانی رویدادهای خود با استفاده از روش‌های trigger () و trigger-handler () انجام می‌شود. بیایید رویداد خودمان را ایجاد کنیم و سپس آن را فراخوانی کنیم.

$("#divl").live("myEvent", function() (
alert ("Handing event custom");
});
$(":button"). کلیک کنید(function() (
$("#divl").trigger("myEvent"); // رویداد را فراخوانی کنید
});

پارامتر Callback> ارجاع به تابعی با فرمت زیر است.

نام تابع تابع ([رویداد[، آرگومان ها] ]) (
// ...
}

عنصری که رویداد را اجرا کرده است در داخل تابع از طریق این نشانگر قابل دسترسی است. توجه داشته باشید که این اشاره گر به عنصری در Document Object Model اشاره دارد، نه عنصری در مجموعه jQuery. اگر متغیری در پارامتر شئ رویداد مشخص شده باشد، از طریق آن می توانید به خصوصیات شی رویداد دسترسی پیدا کنید. می توانید چندین متغیر را که با کاما از هم جدا شده اند در پارامتر Arguments مشخص کنید. مقادیر را می توان با استفاده از پارامتر دوم متدهای trigger() و triggerHandler() به این متغیرها منتقل کرد.

$("#divl").bind("myEvent", function(e, msg) (
alert("Handling event custom." +msg);
});
$(":button"). کلیک کنید(function() (
$("#divl").trigger("myEvent", ["ماپیام"]);
});

با استفاده از متد die() می توانید یک رویداد handler را حذف کنید. قالب روش: die (نوع رویداد[، نام تابع])
توجه داشته باشید
متد die() از jQuery 1.3 در دسترس بوده است.

بیایید یک مثال را در نظر بگیریم.

$("#btnl").live("کلیک"، تابع()
( هشدار ("شما روی دکمه کلیک کردید");
});

$("#btnl").die("کلیک") ; // کنترل کننده را بردارید
});

اگر نام تابع را در پارامتر دوم مشخص کنید، فقط کنترل کننده با آن نام حذف می شود.

تابع f_clickl() (
هشدار("عملکردf_clickl()");
}
تابع f_click2() (
هشدار("عملکردf_click2()");
$("#btnl").live("click", f_clickl);
$("#btnl").live("click", f_click2);
$("#btn2").click(function() (
$("#btnl").die("click", f_click2);
});

!}
!}

در این مثال، ما دو کنترل کننده رویداد کلیک را به دکمه اول اختصاص داده ایم. اگر روی دکمه Click me کلیک کنید دو پیام نمایش داده می شود.
تابع f_clJck1().
تابع f_clJck2().

با کلیک بر روی دکمه Delete Handler، رویداد کنترل کننده به نام f_click2 حذف می شود. اکنون پس از کلیک بر روی دکمه اول فقط یک پیام دریافت می کنیم.
تابع f_click1().

حباب رویداد در jQuery

"حباب رویداد" چیست؟ بیایید به مثال زیر نگاه کنیم (فهرست 6.6).

لیست 6.6. حباب رویداد



روکش کردن</i><i>مناسبت ها</i><i>





کلیکموش اینجا




در این مثال، ما یک کنترل کننده رویداد onclick برای تمام عناصر صفحه نوشته‌ایم. بیایید سعی کنیم روی کلمه اینجا کلیک چپ کنیم. در نتیجه، به جای یک رویداد، یک توالی کامل از رویدادها را دریافت می کنیم.
عنصر SPAN
عنصر P
عنصر BODY
عنصر HTML

به عبارت دیگر، رویداد onclick به ترتیب به عنصر والد بعدی ارسال می شود. برای تگ span، عنصر والد یک پاراگراف است. برای یک پاراگراف، عنصر والد بدنه سند و برای بدنه سند، عنصر والد تگ html است. این جریان رویدادها حباب رویداد نامیده می شود.

گاهی اوقات حباب رویداد باید متوقف شود. برای انجام این کار، مقدار false را در داخل تابع callback برگردانید. بیایید این را با یک مثال نشان دهیم (فهرست 6.7).

لیست 6.7. قطع حباب رویداد



قطع حباب رویداد





کلیکموش اینجا




حالا بیایید سعی کنیم روی کلمه اینجا کلیک چپ کنیم. در نتیجه، به جای چهار رویداد، فقط یک اتفاق می‌افتیم.
عنصر SPAN

علاوه بر برگرداندن false، می توانید از متد ()stopPropagation شی رویداد (فهرست 6-8) برای جلوگیری از حباب شدن رویداد استفاده کنید.

لیست 6.8. توقف پنجره بازشو با متد ()stopPropagation

stopPropagation()


قطع حباب زدن با یک روش</i><br><i>stopPropagation()





کلیکموش اینجا




اقدامات پیش فرض در jQuery و لغو آنها

بسیاری از رویدادها دارای اقدامات پیش‌فرض هستند، یعنی. اقداماتی که مرورگر وب در پاسخ به رویدادهای رخ داده در سند انجام می دهد. به عنوان مثال، هنگام کلیک بر روی یک لینک، عمل پیش فرض این است که به آدرس مشخص شده بروید، با کلیک بر روی دکمه ارسال، اطلاعات فرم ارسال می شود و غیره.

گاهی اوقات اقدامات پیش فرض باید لغو شوند. برای مثال، هنگام ارسال داده‌های فرم، می‌توانید تأیید کنید که با آنچه شما انتظار دارید مطابقت دارد و اگر مطابق با شرایط شما نیست، ارسال را لغو کنید. برای انجام این کار، مقدار false را در داخل تابع handler برگردانید.

فهرست 6.9 نمونه ای از اعتبارسنجی ورود یک آدرس ایمیل در فیلد E-mail و لغو یک لینک در صورت بروز خطا را نشان می دهد.

لیست 6.9. قطع کردن اقدامات پیش‌فرض



قطع کردن اقدامات پیش‌فرض






پست الکترونیک:





کلیکبرایانتقالبرارتباط دادن



علاوه بر برگرداندن false، می‌توانید از متد ()preventDefault () (فهرست 6-10) شی رویداد برای لغو عمل پیش‌فرض استفاده کنید.

لیست 6.10. قطع رویدادها با متد ()preventDefault

جلوگیری از پیش فرض()


قطع رویدادها با یک روش</i><br><i>جلوگیری از پیش فرض()






پست الکترونیک:





کلیکبرایانتقالبرارتباط دادن



تمام اقدامات کاربر هنگام تعامل با برنامه به حرکت دادن ماوس، فشار دادن دکمه های ماوس و فشار دادن کلیدهای صفحه کلید خلاصه می شود. بیایید پردازش را در کاربرد رویدادهای مرتبط با این دستکاری های کاربر در نظر بگیریم.

رویدادهای موش دنباله ای از رویدادها

اجزای دلفی تعدادی از رویدادهای ماوس را تعریف می کنند. این وقایع هستند:

OnClick Mouse روی کامپوننت و برخی اقدامات دیگر کاربر کلیک کنید.

OnDblClick روی کامپوننت دوبار کلیک کنید.

OnMouseDown فشار دادن دکمه ماوس روی کامپوننت. تشخیص دکمه فشار داده شده و مختصات نشانگر ماوس امکان پذیر است

OnMouseMove نشانگر ماوس را روی کامپوننت حرکت دهید. تشخیص دکمه فشرده شده و مختصات نشانگر ماوس امکان پذیر است.

OnMouseUp رها کردن دکمه ماوس که قبلا فشار داده شده بود روی کامپوننت. تشخیص دکمه فشار داده شده و مختصات نشانگر ماوس امکان پذیر است

OnStartDrag فرآیند کشیدن یک شی را شروع می کند. تشخیص شیء کشیده شده امکان پذیر است.

OnDragOver شیء کشیده شده را روی کامپوننت حرکت دهید. تشخیص شیء کشیده شده و مختصات نشانگر ماوس امکان پذیر است.

OnDragDrop: پس از کشیدن یک شی، دکمه ماوس را که قبلاً فشار داده اید، رها می کند، می توان شیء کشیده شده و مختصات مکان نما ماوس را تشخیص داد.

OnEndDrag رویداد دیگری که در آن دکمه قبلاً فشار داده شده ماوس پس از کشیدن یک شی آزاد می شود. تشخیص شیء کشیده شده و مختصات نشانگر ماوس امکان پذیر است.

OnEnter رویدادی که یک عنصر در نتیجه دستکاری ماوس، فشار دادن کلید تب یا انتقال فوکوس برنامه‌ای فوکوس دریافت می‌کند.

رویداد OnExit زمانی که عنصری در نتیجه دستکاری ماوس، کلید تب یا انتقال برنامه‌ای فوکوس، فوکوس خود را از دست می‌دهد.

رویداد OnMouseWheel زمانی که چرخ ماوس در هر جهتی بچرخد. از دلفی 5

OnMouseWheelUp چرخ ماوس را به سمت بالا می چرخاند. در صورتی رخ می دهد که چرخش توسط رویداد OnMouseWheel کنترل نشود. از دلفی 5.

OnMouseWheelDown چرخ ماوس را به پایین می چرخاند. در صورتی رخ می دهد که چرخش توسط رویداد OnMouseWheel کنترل نشود. از دلفی 5.

همانطور که می بینید، این رویدادها هر دستکاری قابل تصور ماوس را پوشش می دهند و حتی بسیاری از آنها را تکرار می کنند. پرکاربردترین رویداد کلیک کنید.معمولاً زمانی اتفاق می‌افتد که کاربر روی مؤلفه کلیک کرده باشد، یعنی. در حالی که نشانگر ماوس روی کامپوننت قرار داشت، دکمه ماوس را فشار داده و رها کرد. اما این رویداد در برخی از اقدامات دیگر کاربر نیز رخ می دهد. این اتفاق می افتد اگر:

کاربر با فشار دادن یک کلید پیکان، یک مورد را در شبکه، درخت، فهرست، کشویی انتخاب کرده است.

کاربر در حالی که دکمه یا نشانگر در فوکوس بود، کلید فاصله را فشار داد.

کاربر کلید Enter را فشار داده است و فرم فعال دارای یک دکمه پیش فرض است که توسط ویژگی مشخص شده است پیش فرض

کاربر کلید Esc را فشار داده است و فرم فعال دارای یک دکمه شکست است که توسط ویژگی مشخص شده است لغو کنید.

کاربر میانبرهای صفحه کلید را برای یک دکمه یا نشانگر فشار داد. مثلاً اگر ملک عنواننشانگر به صورت "&Bold" نوشته می شود و کاراکتر "P" زیر آن خط کشیده می شود، سپس با فشار دادن کلید ترکیبی Alt-P توسط کاربر، رویداد راه اندازی می شود. کلیک کنیددر این شاخص

برنامه نصب شده در درست است، واقعیویژگی بررسی شددکمه های رادیویی دکمه رادیویی.

برنامه یک ویژگی را تغییر داده است بررسی شدنشانگر چک باکس

روش فراخوانی شد کلیکعنصر منو.

برای رویداد فرم کلیک کنیداگر کاربر روی یک قسمت خالی از فرم یا روی یک جزء غیرقابل دسترسی کلیک کرده باشد رخ می دهد.

فراوانی رویدادهای مرتبط با ماوس، و همچنین تکرار واقعی برخی از آنها، مستلزم درک روشنی از توالی رویدادهای فردی است که با یک اقدام کاربر خاص رخ می دهد. بیایید به این سکانس ها نگاه کنیم.

در زمان راه‌اندازی برنامه، از رویدادهایی که در نظر می‌گیریم، فقط رویداد OnEnter در مؤلفه‌ای رخ می‌دهد که تمرکز به آن منتقل می‌شود. این رویداد با هیچ اقدام کاربر مرتبط نیست، بنابراین ما در مورد آن صحبت نمی کنیم.

اکنون ساده ترین اقدام کاربر را در نظر بگیرید: تغییر فوکوس از یک عنصر به عنصر دیگر با ماوس. توالی رویدادها در این مورد در جدول آورده شده است. یکی

جدول 1. توالی رویدادهای ماوس هنگام تغییر فوکوس

اقدام کاربر

حرکت مکان نما ماوس در اولین جزء

بسیاری از رویدادهای OnMouseMove در جزء اول

حرکت مکان نما ماوس در یک فرم

بسیاری از رویدادهای OnMouseMove در یک فرم

حرکت مکان نما ماوس در جزء دوم

بسیاری از رویدادهای OnMouseMove در مؤلفه دوم

کلیک ماوس

OnExit در جزء اول

OnEnter در کامپوننت دوم

OnMouseDown در جزء دوم

رها کردن دکمه ماوس

OnClick در جزء دوم

OnMouseUp در جزء دوم

تحولات OnMouseMoveبه طور مداوم در فرآیند حرکت مکان‌نمای ماوس و حتی زمانی که می‌لرزد، اتفاق می‌افتد که اگر کاربر دست‌های خود را از روی ماوس خارج نکند، اجتناب‌ناپذیر است. این باید در نظر گرفته شود و از این رویداد باید بسیار با دقت استفاده شود، زیرا برخلاف دیگران، به طور مکرر رخ می دهد.

همانطور که از جدول بالا مشاهده می شود، هر اقدام کاربر مرتبط با فشار دادن یا رها کردن دکمه ماوس منجر به یک سری رویدادهای متوالی می شود. در کنترل‌کننده‌های رویداد OnMouseDown و OnMouseUp، می‌توانید تشخیص دهید که کدام دکمه ماوس فشرده شده است و مکان‌نمای ماوس در حال حاضر در کجا روی مولفه قرار دارد.

در جدول در نظر گرفته شده است. 1 دنباله از رویدادها رخ می دهد اگر ویژگی در جزء دوم DragModeبرابر dmManual (شروع دستی فرآیند کشیدن)، همانطور که به طور پیش فرض تنظیم شده است. اگر این ملک است dmAutomatic(شروع خودکار فرآیند کشیدن و رها کردن)، سپس تمام رویدادهای در نظر گرفته شده مربوط به دستکاری ماوس با موارد زیر جایگزین می شوند:

OnMouseDown با OnStartDrag جایگزین شد

اگر دکمه فشار داده شود و مکان نما ماوس حرکت کند، پس

OnMouseMove با رویداد OnDragOver مولفه ای که مکان نما ماوس روی آن حرکت می کند جایگزین شد.

OnMouseUp با رویداد OnDragDrop از مؤلفه‌ای که کشیدن روی آن به پایان می‌رسد (اگر مؤلفه بتواند اطلاعات شیء کشیده شده را بپذیرد) و رویداد OnEndDrag بعدی مؤلفه‌ای که کشیده شده است جایگزین می‌شود.

تحولات در خروجیو OnEnterبه هیچ وجه رخ نمی دهد، زیرا تغییر فوکوس وجود ندارد. واقعه رخ نمی دهد کلیک کنید.

اگر در مثالی که در جدول 1 نشان داده شده است، کلیک روی شیئی انجام شود که در آن لحظه از قبل در فوکوس است، هیچ رویدادی رخ نمی دهد. در خروجیو onEnter که دردر این حالت، با کلیک روی دکمه، فقط رویداد رخ می دهد OnMouseDown،و هنگامی که دکمه آزاد شد - رویدادها OnCلیck و OnMouseUp.

حالا توالی رویدادها را در صورت دوبار کلیک کردن روی یک مؤلفه در نظر بگیرید. در جدول آورده شده است. 2. تشخیص دکمه فشار داده شده ماوس هنوز فقط در رویدادها امکان پذیر است OnMouseDown و OnMouseUp.اگر لازم است دقیقاً دوبار کلیک یک دکمه خاص ماوس را تشخیص دهید، به عنوان مثال، می توانید یک متغیر خاص که پرچم دوبار کلیک است را وارد کنید، این پرچم را در کنترل کننده رویداد تنظیم کنید. OnDblClicک, و در گردانندگان رویداد OnMouseDownیا OnMouseUpاین پرچم را بررسی کنید و اگر تنظیم شده است، آن را بازنشانی کنید و اقدامات برنامه ریزی شده را انجام دهید.

جدول 2. توالی رویدادهای ماوس هنگام دوبار کلیک کردن روی یک جزء

اقدام کاربر

اولین کلیک ماوس

OnMouseDown. تشخیص دکمه فشرده شده و مختصات نشانگر ماوس امکان پذیر است.

اولین رها کردن دکمه ماوس

کلیک دوم ماوس

OnMouseDown. تشخیص دکمه فشرده شده و مختصات نشانگر ماوس امکان پذیر است.

انتشار دوم دکمه ماوس

OnMouseUp. تشخیص دکمه فشرده شده و مختصات نشانگر ماوس امکان پذیر است.

برترین مقالات مرتبط