مسج، ومنع عند _ النقر = window.location على العنصر الأصل

StackOverflow https://stackoverflow.com/questions/820583

  •  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>

(وبطبيعة الحال، هل يمكن وضع كل هذا السطر، ولكن هذا فوضى دموية.)

وأنت قد تجد أيضا هذا السؤال إلقاء الضوء .

نصائح أخرى

يمكنك كتابة

onclick="false"

وإضافة أحداث باستخدام نموذج مستوى الحدث 2 (attachEvent في أي أو addEventListener في المتصفحات الأخرى). يمكنك أيضا لك مسج ربط ( "فوق") إذا كنت تستخدم مسج.

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