Frage

Ich habe den folgenden Code, verwendet einfach ein jQuery UI modalen Dialog zu „bestätigen“ jeder Klick auf einen Link. Wenn sie auf OK klicken, dann sendet er sich an den Original-Link. Es funktioniert gut, so nicht die Mühe es in zu viel Detail zu lesen =)

    $('.confirm').live('click', function(e) {
  e.preventDefault();
  var theHref = $(this).attr('href');
  var confirmText = 'Are you sure?';
  if ($(this).attr('confirm')) {
   confirmText = $(this).attr('confirm');
  }
  confirmDialog.html(confirmText);
  confirmDialog.dialog({
   buttons: {
    'OK': function() {
     window.location = theHref;
     $(this).dialog('close');
    },
    Cancel: function() {
     $(this).dialog('close');
     return false;
    }
   }
  });
  confirmDialog.dialog('open');
  return false;
 });

Dann habe ich eine Reihe von anderer beliebiger Funktionalität. Wie, sagen diese:

    $('a.reset').live('click', function(e) {
  e.preventDefault();
  $(this).parents('form')[0].reset();
 });

Das ist nur ein Link, setzt eine Form (wie ein input type = Reset). Diese Funktionalität funktioniert auch gut. Bitte beachten Sie dies nur ein beliebiges Beispiel ist. Ich habe viele verschiedene Schnipsel von JS-Funktionalität, die ich über Klassen befestigen.

Das Problem, das mir begegnet ist, ist diese beiden Stapel. In diesem Beispiel könnten Bestätigungen wollen einige Reset-Links, die ich, könnte einige ich nicht. Wie so:

<a href="" class="reset confirm">Reset on confirmation</a>
<a href="" class="reset">Reset without confirmation</a>

Das Problem ist natürlich, dass das erste Beispiel nicht über die confirm schert - es geht einfach weiter und setzt. Gibt es irgendeine Weise, die ich auch weiterhin diese Bits von Code getrennt und modular (wie im HTML-Beispiel) halten können, während zugleich eine Abhängigkeit von dem Ausgang des anderen zu machen?

Ich hoffe, es ist klar, was ich versuche zu erreichen.

Vielen Dank im Voraus für jede Hilfe. Zum ersten Mal Posting hier so schön = sein)

War es hilfreich?

Lösung

Ich weiß nicht, ob dies funktionieren wird, aber versuchen, den .live Handler in umgekehrter Reihenfolge zu erstellen. Ich denke, sie könnten vom letzten zum ersten befestigt angebracht ausgelöst werden.

Andere Tipps

gut ein sehr einfacher Ansatz krank erraten, was ich verstehe Sie wären erreichen wollen zu prüfen, ob das Element die Bestätigung Klasse mit ihm verbunden, bevor Sie eine Standardverhalten verhindern und was nicht

Ich denke, man kann wahrscheinlich Art dies aus, indem Sie einfach den Code in der confirm Klasse vor der Reset-Klasse anzubringen. Setzen Sie ihn einfach höher in Ihrem document.ready oder wo auch immer Sie die Ereignisse angeben.

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