我从两个事件处理程序中提取了一个函数,但我想知道事件处理程序本身是否可以组合:
// when to hide/show the Submit link (select is changed)
$('.season select').on('change', function() {
var TVContainer = $(this).parents('.submission');
getTVData(TVContainer);
});
// when to hide/show the Submit link (validate on input changed)
$('.season input').on('keyup', function() {
var TVContainer = $(this).parents('.submission');
getTVData(TVContainer);
});
您可以将处理程序提取到另一个函数:
function handler () {
var TVContainer = $(this).parents('.submission');
getTVData(TVContainer);
}
$('.season select').on('change', handler);
// when to hide/show the Submit link (validate on input changed)
$('.season input').on('keyup', handler);
只需将处理程序作为一个单独的函数。要确保在function
中获得正确的this
,请使用bind(this)
。
function handler() {
var TVContainer = $(this).parents('.submission');
getTVData(TVContainer);
}
// when to hide/show the Submit link (select is changed)
$('.season select').on('change', handler.bind(this));
// when to hide/show the Submit link (validate on input changed)
$('.season input').on('keyup', handler.bind(this));
您可以组合选择器和事件,尤其是因为您不能在select中键入。试试看。。您可能需要处理从输入退出后调用的更改事件。
$('.season select, .season input').on('change keyup', function() {
alert("change or keyup called");
});
小提琴:http://jsfiddle.net/Lbztf7eh/