Es könnte die Art und Weise das sein, dass ich näher bin einfach nicht funktionieren, aber zu erklären:Bestimmen Kind-Element am meisten auf für Javascript-Ereignis angeklickt (Datatable bezogen)
Ich habe ein DataTable mit Spaltensortierung aktiviert über die Standard-Spaltenüberschrift Sortiergrafik. In einem der Spaltenüberschriften habe ich auch ein "Alle auswählen" Kontrollkästchen. Die Sortierung und die "Alles auswählen" funktionieren beide, aber ich kann nicht verhindern, dass der Sortiervorgang stattfindet, wenn ich das Kontrollkästchen Alles auswählen anklicke.
Das Problem scheint zu sein, dass die DataTables-Sortierfunktion vor der Select-All-Operation aufgerufen wird - in der Erfassung statt in der Sprudel- Up-Phase in dem, was ich verstehe, der richtige JS-Sprachgebrauch zu sein.
Ich habe zwischen verschiedenen Leitfäden und Forumsbeiträgen hin- und hergeschickt, aber ich frage mich, ob es funktionieren wird. Ich habe event.stopPropagation()
zur Auswahl aller Routine hinzugefügt, aber weil dies nur nach der Sortierroutine aufgerufen wird, scheint es von wenig Nutzen zu sein. Ich bin auch die event.target
Route hinuntergegangen, um die Sortieroperation bedingt auszuführen nur zu lassen, wenn die geklickte ID nicht die Checkbox war, aber für alles kann ich sagen, dass das Ereignisobjekt keinen Bezug auf das ursprüngliche geklickte Element hält (tut es?).
Also, ohne Bearbeitung der DataTables-Quelle (ich würde wirklich lieber so von der Stange, wenn überhaupt möglich), wie habe ich die Sortierroutine nur ausgeführt, wenn der Spaltenkopf selbst angeklickt ist, im Gegensatz zu einem Kind Element?
Deshalb möchte ich etwas entlang der Linien von:
function SelectAll(event)
{
event.stopPropagation(); //Doesn't help
...
}
$("#table_id").on("order.dt", function (event, settings)
{
if(event.not_clicked_select_all)
{
table_id.order();
}
});
Wie dies geschehen könnte? Vielen Dank.
Edit: Jsfiddle
'stopPropagation' soll, wenn sie richtig verwendet arbeiten. Stellen Sie eine [mcve] – charlietfl
Die Aufnahme von DataTables macht nicht ein echtes Beispiel so einfach wie es vielleicht ist, aber ich werde es versuchen. Was ich aber sagen kann ist, dass ein Breakpoint in der "on order.dt" Funktion immer vor einem Breakpoint in SelectAll() angetroffen wird (zu welcher Zeit die Sortierung schon passiert ist), also bin ich mir nicht sicher wie stopPropogation() wird dort helfen. – whoasked
Datatables ist auf zahlreichen verschiedenen CDNs verfügbar, so dass es sehr einfach ist, Ressourcen dafür auf jeder Sandbox-Seite wie jsfiddle, plunker, codepen usw. einzuschließen. – charlietfl