将两个事件处理程序组合为一个(jquery)



我从两个事件处理程序中提取了一个函数,但我想知道事件处理程序本身是否可以组合:

// 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/

最新更新