触发相同功能的多个事件(特定情况)

时间:2012-05-10 13:01:54

标签: jquery triggers bind

我读到你可以使用bind()函数显然绑定不同的事件。但是我在理解语法方面遇到了麻烦,特别是当有像keydown这样的特定函数时,会接受参数。这是我的代码示例:

            $('#closePopup').click(function(){
                popupbg.add(popup).fadeOut();
            });
            $(document).keydown(function(e){
                if(e.keyCode==27){
                    popupbg.add(popup).fadeOut();
                }
            });

有没有办法绑定/在这两个触发器上,所以我可以避免重复popupbg.add(弹出).fadeOut();声明?喜欢(点击和按键(e))这样做

3 个答案:

答案 0 :(得分:1)

不幸的是,您无法在一个语句中将不同的事件绑定到不同的对象。

您可以将该代码放入函数中并在两个事件中调用该函数以避免重复代码:

function closePopupbg(){
    popupbg.add(popup).fadeOut();
}

$('#closePopup').click(closePopupbg);
$(document).keydown(function(e){
    if(e.keyCode==27){
        closePopupbg();
    }
});

答案 1 :(得分:0)

在我看来,您希望在函数中定义popupbg.add(popup).fadeOut();,然后从您定义的许多事件中调用它:

    var someFunctionName = function(){
         popupbg.add(popup).fadeOut();
    };

    $('#closePopup').click(function(){
        someFunctionName();
    });
    $(document).keydown(function(e){
        if(e.keyCode==27){
            someFunctionName();
        }
    });

*编辑** 我没有以任何方式测试此代码,仅用于演示目的,因此请不要在准确性,范围或任何类似问题上打电话给我:)。

答案 2 :(得分:0)

您还可以触发click事件:

$('#closePopup').click(function() {
    popupbg.add(popup).fadeOut();
});

$(document).keydown(function(e) {
    if (e.keyCode == 27) {
        $('#closePopup').trigger('click');
    }
});​