如何在不重复的情况下为两个不同的jQuery事件使用相同的代码?

时间:2014-08-28 19:22:28

标签: javascript jquery

我必须在两个不同的事件上调用相同的函数,如下面的给出示例中所述:

 // calling a function on keyup
 $('#textarea').keyup(function() {
    var text_length = $('#textarea').val().length;
    var text_remaining = text_max - text_length;

    $('#textarea_feedback').html(text_remaining + ' characters remaining');
 });

 // calling same function on click
 $('#cancel').click(function() {
    var text_length = $('#textarea').val().length;
    var text_remaining = text_max - text_length;

    $('#textarea_feedback').html(text_remaining + ' characters remaining');
 });

请注意,上述功能在两种情况下都做同样的事情,我只需要在不同条件下调用该功能。

现在我的问题是,我可以在同一行中设置两个事件,以便我可以避免设置两次功能吗?

2 个答案:

答案 0 :(得分:5)

只需单独声明该功能,然后在两个事件中使用它。

var func_event = function() {
    var text_length = $('#textarea').val().length;
    var text_remaining = text_max - text_length;

    $('#textarea_feedback').html(text_remaining + ' characters remaining');
};

$('#textarea').keyup(func_event);
$('#cancel').click(func_event);

答案 1 :(得分:0)

你可以使用一个功能:

 // calling a function on keyup
 $('#textarea').keyup(function() {
       exampleFunction();
 });

 // calling same function on click
 $('#cancel').click(function() {
       exampleFunction();
 });

 function exampleFunction(){

       var text_length = $('#textarea').val().length;
       var text_remaining = text_max - text_length;

       $('#textarea_feedback').html(text_remaining + ' characters remaining');
 }