Frage

Ich habe eine Tabelle mit Daten wie folgt aus:

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

Das Problem, das ich habe, ist, dass, wenn Sie den (Anleitung) Link klicken, soll ein Fenster mit den Anweisungen Popup. Er tut es, aber es löst auch die OnClick des TR. So bekomme ich das Popup für einen Bruchteil einer Sekunde, dann geht es download.php.

Gibt es irgendwie ich es aus dem Brennen des Onclick des TR verhindern kann? Vorzugsweise mit Jquery, aber ich weiß nicht eine einfache JavaScript-Lösungen auch nicht.

Geist
War es hilfreich?

Lösung

Grundsätzlich müssen Sie Ausbreitung von Ereignissen stoppen , mit event.cancelBubble ( für IE) oder event.stopPropagation () (für alle anderen). Die Lösung von Quirksmode gegeben (die ich vorher benutzt habe) zu tun so etwas wie folgt aus:

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

Dann wird Ihr Skript würde es nennen:

<td>Program 1<br/>Short Description 1 (<a onclick="instructions(event)">Instructions</a>)</td>

(Natürlich können Sie diese alle inline setzen, aber das ist ein blutiges Chaos.)

Sie können auch feststellen, diese Frage Beleuchtungs .

Andere Tipps

Sie können schreiben

onclick="false"

und fügen Sie Ereignisse Ereignismodell 2 (attachEvent in dh oder addEventListener in anderen Browsern) verwenden. Sie können Sie auch JQuery Bind ( 'Klick'), wenn Sie jquery verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top