• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
event.stopPropagation() در جی کوئری
#1
سلام.

شاید یکی از مشکلاتی که باهاش دست و پنجه نرم میکردیم (یکیش خودم) این بود میخواستم اگر روی یک المنت کلیک شد یک المنت دیگه باز و بار دیگه کلیک شد بسته بشه. علاوه بر این میخواستم وقتی باز هست اون المنت هرجای صفحه کلیک کردیم بسته بشه. الا خود المنت دوم. خب قاعدتاً حرفه ای ها متوجه یه تناقض شدن الآن. اگر نشدی حرفه ای نیستی Big Grin
هرجای صفحه یعنی کلاً برچسب html . خب اگر قرار باشه هرجا کلیک شد اون المنت بسته بشه پس دستور اول ما که کلیک روی المنت بود اجرا نخواهد شد یا میشه اما بی اثره.
اینجا این متد به کمک ما میاد و اینطوری مینویسیم.
کد:
<script>
$(document).ready(function(){
$("#element1").click(function(){
if($("#element2").is(":visible")) $("#element2").hide();
else $("#element2").show();
});
$("html").click(function(){
$("#element2").hide();
});
$("#element1,#element2").click(function(event){
event.stopPropagation();
});
});
</script>
http://api.jquery.com/event.stopPropagation/
در حقیقت کار این متد اینه که اگر تغییری روی اون المنت/المنت هایی که مشخص کردی صورت گرفت، قبلش اگر عملی مشابه انجام میشد اون رو متوقف کنه.
یه نمونه http://www.tutorialspoint.com/cgi-bin/pr...jquery_105 واسه اینکه خودتون تست کنید.
در این تست اگر دقت کنید ما دو div داریم ولی اسکریپت ما اشاره فقط به یک المنت داره. با این متد اگر قبلش رویدادی صورت گرفته باشه رو متوقف میکنه و ادامه میده. در نتیجه بدون خطا شاهد تغییر صحیح خواهیم بود.

البته این مثال رو با متد each() هم میشد حل کرد ولی خب اینم یه راهشه
غایب
  پاسخ
تشکر شده توسط : masoudmanson keyhan.taktaz


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان