مسج، ومنع عند _ النقر = window.location على العنصر الأصل
-
03-07-2019 - |
سؤال
ولدي جدول مع البيانات مثل هذا:
<table>
<tr onclick="window.location='download.php?id=1'">
<td>Program 1<br/>Short Description 1 (<a onclick="$.popup.show('Install Instructions', 'Instructions pulled from DB here')">Instructions</a>)</td>
<td>Added by user and date/time here<td>
<td>Filesize here<td>
<td><a href="edit.php?id=1">Edit</a> - <a href="delete.php?id=1">Delete</a><td>
</tr>
(repeat TRs for more programs pulled from DB)
</table>
والمشكلة أواجه هو أنه عندما كنت اضغط على الرابط (تعليمات)، فإنه يجب أن تعداد نافذة للتعليمات. فإنه لا يفعل ذلك، لكنه يطلق أيضا عند _ النقر على TR و. حتى أحصل على منبثقة لجزء من الثانية ثم يذهب إلى download.php.
هل هناك نوعا يمكنني منعها من إطلاق عند _ النقر على TR و؟ ويفضل استخدام مسج، ولكن لا مانع سهل جافا سكريبت حلول سواء.
المحلول
وأساسا، تحتاج إلى إيقاف نشر الأحداث ، وذلك باستخدام event.cancelBubble ( لIE) أو event.stopPropagation () (لشخص آخر). و حل معين من quirksmode (والتي كنت قد استخدمت من قبل) هو أن تفعل شيء من هذا القبيل:
<script type="text/javascript">
var instructions = function(e) {
// Get the correct event in a cross-browser manner, then stop bubbling/propagation.
if (!e) var e = window.event;
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
// Do what you want now
$.popup.show('Install Instructions', 'Instructions pulled from DB here');
}
</script>
وبعد ذلك السيناريو الخاص بك سوف يطلق عليه:
<td>Program 1<br/>Short Description 1 (<a onclick="instructions(event)">Instructions</a>)</td>
(وبطبيعة الحال، هل يمكن وضع كل هذا السطر، ولكن هذا فوضى دموية.)
وأنت قد تجد أيضا هذا السؤال إلقاء الضوء .
نصائح أخرى
وstopPropogation هي واحدة تريد.
http://docs.jquery.com/Events/jQuery .Event # event.stopPropagation.28.29
يمكنك كتابة
onclick="false"
وإضافة أحداث باستخدام نموذج مستوى الحدث 2 (attachEvent في أي أو addEventListener في المتصفحات الأخرى). يمكنك أيضا لك مسج ربط ( "فوق") إذا كنت تستخدم مسج.