Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   грамотно привязать делегированный обработчик к таблице? (https://javascript.ru/forum/jquery/61128-gramotno-privyazat-delegirovannyjj-obrabotchik-k-tablice.html)

Floyd 05.02.2016 16:36

грамотно привязать делегированный обработчик к таблице?
 
всем привет снова.
аяксом получаю и вставляю на страницу таблички (у них класс .base-table).
в этих табличках при нажатии клике строка выделяется.
сейчас обработчик выглядит вот так:
$("body").on(h_click, ".base-table tbody tr", function(event) { ... }

если я верно понимаю, боди постоянно ждет появления tr с предком tbody у которого предок с классом base-table и навешивает клик.

сделать
$(".base-table").on(h_click, "tbody tr", function(event) { ... }
не могу, тк таблички появляются динамически.

нужно что-то вроде
$("body").on(h_click, ".base-table", function(event) {
// а вот здесь отловить грамотно строку tbody tr, на которой кликнули.
 ... }

вопрос: верным ли путем я это хочу оптимизировать, и как грамотно отловить tbody tr?
спасибо!

laimas 05.02.2016 16:57

Цитата:

Сообщение от Floyd
$("body").on(h_click, ".base-table", function(event) {
// а вот здесь отловить грамотно строку tbody tr, на которой кликнули.
... }

Нужно как раз $(".base-table").on(h_click, "tr", fuction() {this - это и есть строка по которой щелкнули} и это делегирование обработки. А если надо так, то сразу после получения ответа и построения таблицы устанавливайте этот обработчик.

Floyd 05.02.2016 17:01

это я понимаю, но сейчас не могу изменить структуру настолько, что после аякса устанавливать обработчик.

laimas 05.02.2016 17:32

$("body").on(h_click, ".base-table tr", function() {
     this это tr
 ... }

Floyd 08.02.2016 12:20

я понимаю про this,
просил только как лучше всего при клике на .base-table (и this будет таблица) отловить tr на котором был клик.
абы как файндами и парентами реализовано, хотел решения на уровне отлова свойств объекта target или подобного

laimas 08.02.2016 13:07

А зачем через target, если указано делегирование обработки TR, JQ сразу его сразу и вернет, и это будет this, иначе зачем тогда вообще подключать JQ.

Floyd 08.02.2016 17:25

нет, это что-то с чем-то...

из первого сообщения:
нужно что-то вроде
$("body").on(h_click, ".base-table", function(event) {
// а вот здесь отловить грамотно строку tbody tr, на которой кликнули.
// УТОЧНЕНИЕ: отловить tr на котором был клик. абы как файндами и парентами реализовано, хотел решения на уровне отлова свойств объекта target или подобного - в event или this
... }

laimas 08.02.2016 17:36

А какая хрен разница либо сразу function() ... this, это и есть строка по которой щелкнули, или же function(event) ... event.target?


Часовой пояс GMT +3, время: 14:40.