2016-06-08 5 views
1

Ich verwende DataTables Select-Erweiterung, sodass ich mehrere Zeilen auswählen kann. In this jsfiddle example funktioniert es, abgesehen davon, dass die Zeilen auch ausgewählt sind, wenn auf einen Hyperlink geklickt wird. Ich möchte, dass Hyperlinks von der Auswahl von Zeilen ausgeschlossen werden. Wie kann ich das machen?DataTables schließen Hyperlinks von der Auswahl von Zeilen aus

Das ist mein Tables Wählen Initialisierung:

$('#example').DataTable({ 
    select: { 
     style: 'multi', 
     selector: 'tr:not(a)' 
    } 
    }); 

Antwort

1

Einfach verhindern, dass andere Listener von stopImmediatePropagation() ausgeführt werden;

$('a.do-nothing').on('click', function(e){ 
    e.stopImmediatePropagation(); 
}); 

aktualisiert Geige ->https://jsfiddle.net/9hhaofky/2/

preventDefault(), wie Sie verhindern, verwenden nur Standardverhalten, wie zum Beispiel verhindern Checkbox davor geprüft.

+0

Vielen Dank! Eine Nachfolgefrage: Wie deaktiviere ich auch das Standardverhalten? In [diesem Beispiel] (https://jsfiddle.net/9hhaofky/3/) funktionieren die Links weiterhin (auf einer neuen Seite öffnend). Das Hinzufügen von 'e.preventDefault()' oder das Stapeln zu 'e.stopImmediatePropagation()' funktioniert nicht. – Bob

+0

@Bob - 'return false' -> https://jsfiddle.net/9hhaofky/5/ -> [false aus einem jQuery-Ereignishandler zurückzugeben ist effektiv das gleiche wie das Aufrufen von e.preventDefault und e.stopPropagation auf dem übergebenen ] (http://stackoverflow.com/a/1357151/1407478) – davidkonrad

+0

Danke nochmal! :) Wie funktioniert es aber in dieser Situation: https://jsfiddle.net/9hhaofky/6/? Ich kann die Antwort darauf nicht finden. :( – Bob

1

Ich denke, so etwas wie:

$('a.do-nothing').on('click', function(e){ 
    e.stopPropagation(); 
}); 

den Trick;)

PS .: ich im jsfiddle getestet, so Sie können in Ihrem Projekt einen anderen Bezeichner als a.do-nothing verwenden.

+0

Vielen Dank! Genau wie die andere Antwort von davidkonrad habe ich eine weitere Frage: Wie deaktiviere ich auch das Standardverhalten? In [diesem Beispiel] (https://jsfiddle.net/9hhaofky/3/) funktionieren die Links weiterhin (auf einer neuen Seite öffnend). Das Hinzufügen von 'e.preventDefault()' oder das Stapeln zu 'e.stopImmediatePropagation()' funktioniert nicht. – Bob