Нет, только вторая версия является динамической привязкой.
Он должен быть прост для понимания. Когда у вас есть код:
$(selector).method(arguments);
JQuery находит все элементы, которые соответствуют selector
на момент выполнения кода, и вызывает method
на них в то время. Если вы выполните этот код при первой загрузке страницы, он найдет только элементы, соответствующие селектору в исходном документе. Если элементы tr
добавлены динамически, первая версия их не найдет, поэтому они не свяжут с ними событие click.
При использовании .on()
с селектором в качестве второго аргумента, например.
$(outerSelector).on(event, innerSelector, function...);
это работает следующим образом. Он находит все элементы, которые соответствуют outerSelector
, и связывает для них обработчик события; эти элементы должны существовать, когда вы вызываете .on()
. Когда событие происходит, обработчик проверяет, соответствует ли цель innerSelector
, а затем выполняет функцию обратного вызова. Таким образом, это позволяет событию работать с динамически добавленными элементами.
Таким образом, общее правило заключается в том, что outerSelector
должен ссылаться на статический элемент в документе, а innerSelector
- на динамические элементы.