та же функция для двух кнопок в jQuery - PullRequest
12 голосов
/ 28 сентября 2010

У меня есть две кнопки: btnAdd и btnUpdate.Я написал функцию jquery для кнопки btnUpdate для проверки некоторых полей на веб-странице, например:

$(function() {

  $('#<%=btnUpdate.ClientID %>').click(function() {
    code here
    });
});

Я хочу сделать то же самое, когда нажимается btnAdd.Поэтому я должен снова написать ту же функцию для btnAdd.Есть ли другой способ избежать этого?

(Если я пишу одну функцию javascript и вызываю одну и ту же функцию в событии нажатия кнопки обеих кнопок, это нормально. Но есть ли способ использовать jQuery?)

Ответы [ 4 ]

22 голосов
/ 28 сентября 2010

Просто выделите две кнопки, разделенные запятой: ("#add, #update").click... В вашем коде это выглядит так:

$(function() { 

  $('#<%=btnUpdate.ClientID %>, #<%=btnAdd.ClientID %>').click(function() { 
    code here 
    }); 
}); 
8 голосов
/ 28 сентября 2010

Есть два пути.

(1) Выберите оба элемента одновременно и примените к ним обработчик событий:

$(function() {
    $('#<%=btnUpdate.ClientID %>, #<%=btnAdd.ClientID %>').click(function() {
        code here
    });
});

(2) Дайте функции имя, а не оставляйте анонимным:

function clickHandler() {
  // code here
}

$('#<%=btnUpdate.ClientID %>, #<%=btnAdd.ClientID %>').click(clickHandler);
6 голосов
/ 28 сентября 2010

Мы называем это Рефакторинг , и это то, что поможет вам полностью, узнайте больше о, инвестируйте в себя и купите фантастический и единственный Книга рефакторинга

в вашем случае вы должны сделать это:

$(function() {

  $('#<%=btnUpdate.ClientID %>').click(function() {
        validate($this);
    });
  $('#<%=btnAdd.ClientID %>').click(function() {
        validate($this);
    });    

});

function validate(myButton)
{
    // code here
}

Как вы всегда должны делать .

но в качестве jQuery у вас могут быть селекторы с несколькими входами, поэтому все, что вам нужно сделать, это:

$('#<%=btnUpdate.ClientID %>, #<%=btnAdd.ClientID %>').click(function() { 
    validate($this);
}
0 голосов
/ 28 сентября 2010

jQuery - это фреймворк JavaScript, а не другой язык, поэтому вы можете написать здесь одну функцию JavaScript.

function validateFields(e) {
    code here;
}

$(function() {
  $('#<%=btnUpdate.ClientID %>').click(validateFields);
  $('#<%=btnAdd.ClientID %>').click(validateFields);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...