2016-07-18 13 views
0

Ich habe eine Ansicht mit einer Datentabelle. Jede Zeile in der Tabelle enthält unterschiedliche Benutzerinformationen in jeder Spalte, einschließlich "Vorname" und "Nachname". Wenn wir auf "Vorname" oder "Nachname" klicken, sollte es mit der entsprechenden Nutzerprofilseite verlinken.Wie eine DataTable-Zeile und ihre Spalte zwei separate Onclick Link-Ereignisse haben

Die Spaltenverknüpfungen funktionieren, jedoch habe ich auch eine Verknüpfung erstellt, die mit jeder Zeile in der Tabelle verknüpft ist. Wenn wir auf die Zeile klicken, sollte sie zu einer anderen URL gehen. Der Code für den Ereignishandler lautet wie folgt:

$('#promoters > tbody > tr').live('click', {}, function (e) { 
    $.ajax({ 
      type: "GET", 
      url: "/Ajax/GetUserbyEmail?email=" + $('#email').val(), 
     }) 
    } 

Das Problem ist, dass ich beide Linkhandler gleichzeitig arbeiten muss. Wenn ich auf die Spalte "Vorname" oder "Nachname" klicke, muss sie mit der Profilseite verlinkt werden und wenn ich irgendwo anders in die Zeile klicke, muss sie den oben gezeigten AJAX aufrufen.

+0

'Live()' ist seit vielen Jahren als veraltet. Wenn Sie eine Version '> = 1.7 'verwenden, sollten Sie' on() ' – charlietfl

Antwort

0

Wie ignorierst du Anker in deinem Click Event Handler? Sie können das Ereignisziel durch e.target.nodeName abrufen.

From the jQuery documentation.

$('#promoters > tbody > tr').on('click', function(e) { 
    // only execute ajax request when element is not an anchor 'a' 
    if(e.target.nodeName.toLowerCase() !== "a") 
     $.ajax({ 
      type: "GET", 
      url: "/Ajax/GetUserbyEmail?email=" + $('#email').val(), 
     }) 
} 
+0

denken, Sie müssen Case NodeName für IE zu senken. Mit jQuery 'ist()' auch bequem – charlietfl

+0

Ja, richtig. Es wäre dann sicherer. Vielen Dank. Aber ich mag jQuery in diesem Fall nicht. Weil Sie 'e.target' zuerst in ein jQuery-Objekt und dann mit' .is() 'ein Häkchen setzen müssen. Es ist langsam und wird in diesem Fall nicht benötigt, da wir das Objekt nicht weiter benutzen ... – eisbehr

+0

Hi @eisbehr die Lösung hat geklappt. Könntest du mir bitte etwas über "e" sagen, was ist das e in der Funktion (e)? Sehr dankbar. – Sam