одна и та же функция для двух кнопок в jQuery

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

$(function() {

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

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

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


person ANP    schedule 28.09.2010    source источник


Ответы (4)


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

$(function() { 

  $('#<%=btnUpdate.ClientID %>, #<%=btnAdd.ClientID %>').click(function() { 
    code here 
    }); 
}); 
person naivists    schedule 28.09.2010
comment
вы должны упомянуть, что рефакторинг — это огромный шаг в разработке. - person balexandre; 28.09.2010

Есть два способа.

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

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

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

function clickHandler() {
  // code here
}

$('#<%=btnUpdate.ClientID %>, #<%=btnAdd.ClientID %>').click(clickHandler);
person mpen    schedule 28.09.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);
}
person balexandre    schedule 28.09.2010

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

function validateFields(e) {
    code here;
}

$(function() {
  $('#<%=btnUpdate.ClientID %>').click(validateFields);
  $('#<%=btnAdd.ClientID %>').click(validateFields);
});
person Paul D. Waite    schedule 28.09.2010