منع جافا سكريبت عند _ النقر على عنصر تابع
-
07-07-2019 - |
سؤال
وطيب، سؤال بسيط:
<div onclick="javascript:manualToggle(this)">
<span>Allowed to click</span>
<span>Not allowed to click</span>
<span>Allowed to click</span>
</div>
وبدون تكرار manualToggle إلى يمتد 2 أن يسمح لفوق، كيف يمكنني منع "غير مسموح للنقر" تمتد من اطلاق انها شعبة الأم الحدث onClick عندما يتم النقر عليه؟
المحلول
وتحتاج إلى معالج الحدث (فإنه من السهل جدا القيام بذلك في شيء من هذا القبيل مسج) التي يمسك النقرات ليمتد داخل شعبة ويطلق فقط وظيفة إذا، على سبيل المثال، تمتد لديه / لديها ليس فئة معينة.
نصائح أخرى
وإعطاء فترة معرف إرفاق الحدث onClick إليها واستخدامها
وعينة مسج
$("#spn2").click(function(event){
event.stopPropagation();
});
event.stopPropagation () : توقف محتدما ل حدث إلى عناصر الوالدين، ومنع أي معالجات الأم من إخطاره الحدث.
ومن المنطقي لاستخدام المكتبة ولكن من دون يمكنك أن تجرب هذا (مع تحرير صفحة كاملة لاختبار):
<html><head></head>
<body>
<script type="text/javascript"><!--
function manualToggle(val)
{
alert(val.id);
}
--></script>
<div id="test" onclick="manualToggle(this);">
<span>Allowed to click</span>
<span onclick="event.cancelBubble=true;if (event.stopPropagation) event.stopPropagation();">Not allowed to click</span>
<span>Allowed to click</span>
</div>
</body>
</html>
موتولز يمكنك استخدام stopPropagation
الأسلوب:
$('myChild').addEvent('click', function(ev){
ev.stopPropagation(); // this will prevent the event to bubble up, and fire the parent's click event.
});
http://mootools.net/docs/core/Native/ الحدث # الحدث: stopPropagation
وانظر أيضا هذا سؤال مشابه جدا: <لأ href = "https://stackoverflow.com/questions/985389/how-can-i-stop-an-onclick-event-from-firing-for-parent-element ، وعندما الطفل هو-كليك "> كيف يمكنني التوقف عن هذا الحدث عند _ النقر من اطلاق للعنصر الأصل عند النقر الطفل؟
ولقد كان نفس القضية وتعذر الحصول على مسج للعمل بحيث كنت بسيط جافا سكريبت:
document.getElementById("your_span").addEventListener("click", (event) => {
event.stopPropagation();
});
وهذا لا حيلة لي. من الواضح أنك بحاجة إلى إضافة addEventListener
إلى كل عنصر كنت تريد تطبيق هذا. منذ أن أفعل الكثير من التلاعب DOM هذا لم يكن مشكلة بالنسبة لي.
نأمل أن يساعد أي شخص:)
<الصورة> الحل المحتمل: إعطاء البائع العمر وتحقق ما إذا كان يسمح للهوية الذي تم النقر عليه ليكون النقر في وظيفة الخاص بك ثانية>
وفكرة سيئة: أنت لا تعرف أي مدى يتم النقر منذ استدعاء وظيفة من شعبة بك ...