та же функция для двух кнопок в jQuery
у меня есть две кнопки: btnAdd
и btnUpdate
. Я написал функцию jquery для button btnUpdate
для проверки некоторых полей на веб-странице, например:
$(function() {
$('#<%=btnUpdate.ClientID %>').click(function() {
code here
});
});
Я хочу сделать то же самое, когда btnAdd
кнопки. Поэтому я должен снова написать ту же функцию для btnAdd. Есть ли другой способ избежать этого?
(если я пишу одну функцию javascript и вызываю ту же функцию в событии нажатия кнопки обеих кнопок, все в порядке. Но есть ли способ использовать в jQuery?)
4 ответов
просто сделать выбор из двух кнопок, разделенных запятой: ("#add, #update").click...
Выглядит так в вашем коде:
$(function() {
$('#<%=btnUpdate.ClientID %>, #<%=btnAdd.ClientID %>').click(function() {
code here
});
});
есть два способа.
(1) Выберите оба элемента сразу и примените к ним обработчик событий:
$(function() {
$('#<%=btnUpdate.ClientID %>, #<%=btnAdd.ClientID %>').click(function() {
code here
});
});
(2) Дайте функции имя, а не оставлять анонимные:
function clickHandler() {
// code here
}
$('#<%=btnUpdate.ClientID %>, #<%=btnAdd.ClientID %>').click(clickHandler);
мы называем это рефакторинг и это то, что поможет вам на всем пути, подробнее о, инвестируйте в себя и купить фантастический один и только рефакторинг книги
в вашем случае, вы должны сделать это:
$(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);
}
jQuery-это фреймворк JavaScript, а не другой язык, поэтому вы можете написать здесь одну функцию JavaScript.
function validateFields(e) {
code here;
}
$(function() {
$('#<%=btnUpdate.ClientID %>').click(validateFields);
$('#<%=btnAdd.ClientID %>').click(validateFields);
});