Может быть, как я подхожу это просто не будет работать, но объяснить:Определить ребенок наиболее элемент щелкнули для Javascript события (DataTable связанного)
У меня есть DataTable с поддержкой сортировки столбца через сортировку по столбцу заголовка столбца по умолчанию. В одном из заголовков столбцов у меня также есть флажок «Выбрать все». Сортировка и «выберите все» работают, но я не могу помешать выполнению операции сортировки при нажатии на флажок «Выбрать все».
Проблема заключается в том, что функция сортировки DataTables вызывается перед выбором всей операции - на этапе захвата, а не на пузырьковой фазе, в том, что я понимаю как правильный JS-язык.
Я вернулся и переехал с этим между различными руководствами и сообщениями на форуме, но я начинаю задаваться вопросом, будет ли это работать. Я добавил event.stopPropagation()
для выбора всей процедуры, но поскольку это вызвано только после процедуры сортировки, она кажется малоиспользуемой. Я также пошел по маршруту event.target
, чтобы условно только запустить операцию сортировки, если идентификатор с кликом не был флажком, но для всего, что я могу сказать, объект события не содержит ссылки на исходный элемент, который нажал (это?).
Итак, не редактируя источник DataTables (я бы предпочел сохранить это с полки, если это вообще возможно), как я могу запустить процедуру сортировки только при щелчке по заголовку столбца, в отличие от дочернего элемент?
Так что я хочу что-то вдоль линий:
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();
}
});
Как это может быть сделано? Благодарю.
Edit: Jsfiddle
'stopPropagation' должен работать, если используется должным образом. Предоставьте [mcve] – charlietfl
. Включение DataTables не делает истинный пример так просто, как может, но у меня все получится. Однако я могу сказать вам, что точка останова в функции «on order.dt» всегда попадает перед точкой останова в SelectAll() (к тому времени сортировка уже произошла), поэтому я не уверен, как stopPropogation() будет помогать там. – whoasked
Datatables доступен на множестве разных cdn, поэтому очень легко включить ресурсы для него на любом сайте песочницы, например jsfiddle, plunker, codepen и т. Д. – charlietfl