سؤال

ولقد 2 طبقات ض مؤشر في تطبيق خريطة أنا بناء. لدي مشكلة عند النقر على الطبقات للتكبير، وانقر معالج على طبقة ض مؤشر الكامنة وأنا لا أريد ذلك لاطلاق النار عند النقر فوق عنصر تحكم في الطبقة الفوقية.

والمشكلة لدي هي أن هذا الحدث يحصل على رفع مهما لكن الخاصية originalTarget لهذا الحدث ليست هي الصورة في طبقة الكامنة عند النقر شيء على الطبقة العليا. هناك على أية حال لتغيير هذا؟

هل كانت مفيدة؟

المحلول

وانه دعا الحدث محتدما، ويمكنك السيطرة عليه مع أسلوب event.stopPropagation() (event.cancelBubble() في IE). يمكنك أيضا التحكم في ذلك من خلال العودة صح / خطأ من معالجات دعا اليه onwhatever سمات على العناصر. انه موضوع صعب لذلك أقترح عليك القيام ببعض البحوث .

ومعلومات: cancelBubble و <ل أ href = "http://www.w3.org/TR/2001/WD-DOM-Level-3-Events-20010823/events.html" يختلط = "نوفولو noreferrer"> stopPropagation

نصائح أخرى

وعلى الرغم من أن هذا لا يعالج المشكلة مباشرة قد يكون حلا قابلا للتطبيق حتى يقدم حلا أكثر ملاءمة نفسها.

وكتابة وظيفة واحدة ليتم استدعاؤها عند _ النقر وتسمح وظيفة ما يكفي من الذكاء لمعرفة من وصفته. ثم يأخذ وظيفة الإجراءات المناسبة استنادا إلى الذين النقر فوقه. هل يمكن إرساله الى حد كبير أي شيء من شأنه أن تكون فريدة من نوعها ومن ثم استخدام التبديل.

ومثال مبسط:

<html>
<body>

<script type="text/javascript">
function myClickHandle(anID)
{
switch(anID){
case 'bottom': 
      alert("I am on the bottom");
      break;
case 'top':
      alert("I am on the top");
      break;
}
}
</script>

<html>
<div style="z-index:10"><input type=button value='top' onclick="myClickHandle(this.value)"/></div>
<div style="z-index:11"><input type=button value='bottom' onclick="myClickHandle(this.value)"/></div>
</body>
</html>

وأعتقد أن أفضل الممارسات لفصل معالج الأحداث عندما ينتقل التحكم إلى الطبقة العليا، وعندما يحصل على التحكم إلى الطبقة السفلى، يمكنك أعد الأحداث.

والأولوية للعنصر الذي لديه كبير ض مؤشر

http://api.jquery.com/event.stopPropagation/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top