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

时间:2018-11-06 18:54:05

标签: javascript 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);
});

3 个答案:

答案 0 :(得分:3)

您可以将处理程序提取到另一个函数:

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);

答案 1 :(得分:2)

只需将处理程序设为单独的函数即可。要确保您在该this中获得正确的function,请使用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));

答案 2 :(得分:0)

您可以组合选择器并组合事件-尤其是因为您无法键入选择项。尝试一下。您可能要处理从输入退出后被调用的更改事件。

$('.season select, .season input').on('change keyup', function() {
    alert("change or keyup called");
});

提琴:http://jsfiddle.net/Lbztf7eh/