Привязка обработчика событий jQuery к нескольким похожим формам

#javascript #jquery #events #event-handling

#javascript #jquery #Мероприятия #обработка событий

Вопрос:

У меня есть html-страница с несколькими похожими элементами, которые можно редактировать на месте:

 The Title
Some description
Count 10
[Edit]

Another Title
Another description
Count 54
[Edit]

...
  

При нажатии кнопки редактирования текст заменяется формой через Ajax (остальная часть страницы перезагружаться не будет):

 Title:       [The Title       ]
Description: [Some description]
Count:       [10]
[Save] [Cancel]

Another Title
Another description
Count 54
[Edit]

...
  

Обработчики событий для замены текста формой и отправки формы практически идентичны для всех элементов. Мой первый подход заключался в использовании идентификаторов в тегах html и привязке обработчика событий jQuery к этому идентификатору. Но это приводит к повторяющемуся коду. Итак, очевидная идея состоит в том, чтобы не повторять аналогичный код для каждого элемента.

Как я могу различать элементы в обработчике событий, чтобы правильный элемент был заменен формой и чтобы была отправлена правильная форма?

Ответ №1:

 $('.classYouPutOnAllEditButtons').click(function () {
    var that = $(this); // this variable now holds a reference to the Edit button that was clicked, you can use a traversal method (e.g. closest()) to find the form it was in
    // do your other stuff
});
  

Ответ №2:

Внутри вашего обработчика событий this ссылается на конкретный элемент, на который был нажат.

 $(yourSelector).bind('event', function () {
    // in here, `this` will be the Edit button.
});