Я бы привязал ко всем входам, но вы можете использовать классы, чтобы сузить его до нужных вам входов.
Вместо
$("#formid input").click(function() {
if($(this).attr('something') == 'special_field') {
//do A
}
});
добавьте класс к интересующим вас элементам <input class='special_field' ... >
и измените ваш селектор:
$("#formid input.special_field").click(function() {
//do A
});
Это ограничит обработчик только желаемыми элементами без каких-либо проверок оператора if.
Вы можете повторить это для всего, что требует специальной обработки.
Последнее замечание по методу .live()
. Это может быть очень удобно по нескольким причинам:
- На самом деле он не создает привязку для каждого соответствующего элемента, он по умолчанию создает прослушиватель для элемента
body
(вы можете выбрать другой элемент в качестве прослушивателя) и ожидает, пока даже не появится пузырек. Когда он пузырится, он проверяет сработавший элемент на селекторе, и если его совпадение запускает событие.
- Поскольку селектор применяется при возникновении события, это означает, что новые элементы, добавленные через Javascript или AJAX, будут запускать код без необходимости их привязки или повторного связывания.
- Существует один слушатель для многих элементов, что означает, что для больших наборов это может быть намного быстрее.