有没有一种简单的方法将这两个jQuery函数合二为一,从而消除了不必要的重复?
$('form#search input').on('keyup', function() {
if ($(this).val() == '') {
$('a#clear').hide();
}
else {
$('a#clear').show();
}
});
$('form#search select').on('change', function() {
if ($(this).val() == '') {
$('a#clear').hide();
}
else {
$('a#clear').show();
}
});
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
如果你想以最优雅,最短的方式有条件地绑定它们,你可以这样做:
var $formSearch = $('form#search'),
hideShow = function () {
if ($(this).val() == '') {
$('a#clear').hide();
}
else {
$('a#clear').show();
}
};
$formSearch.find('input').on('keyup', hideShow);
$formSearch.find('select').on('change', hideShow);
Run Code Online (Sandbox Code Playgroud)
如果您希望为两个选择器触发两个事件,则可以执行此操作.这可能是可以的,因为您可能希望无论如何都要触发它们.
$('form#search input, form#search select').on('keyup change', function() {
if ($(this).val() == '') {
$('a#clear').hide();
}
else {
$('a#clear').show();
}
});
Run Code Online (Sandbox Code Playgroud)
定义一个函数来处理事件,然后按如下方式分配它:
function inputChanged() {
if ($(this).val() == '') {
$('a#clear').hide();
}
else {
$('a#clear').show();
}
}
$('form#search input').on('keyup', inputChanged);
$('form#search select').on('change', inputChanged);
Run Code Online (Sandbox Code Playgroud)