2012-05-10 76 views
0

我认为你可以使用bind()函数显然绑定不同的事件。但是我有麻烦理解语法,特别是当有像keydown这样的具体函数需要参数时。这里是我的代码示例:触发相同功能的多个事件(特定情况)

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

是否有绑定的方式/这些触发器2,所以我能避免重复popupbg.add(弹出).fadeOut();声明?赞(上点击按键(E))这样做

+1

在jQuery的1.7,.on()方法是将事件处理程序附加到文档的首选方法。 – j08691

+0

那么问题是什么? – VisioN

回答

1

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

你可以把这些代码在一个函数,调用该函数在这两个事件,以避免重复代码:

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

$('#closePopup').click(closePopupbg); 
$(document).keydown(function(e){ 
    if(e.keyCode==27){ 
     closePopupbg(); 
    } 
}); 
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(); 
     } 
    }); 

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

+0

嗯,不完全是,我想要多个触发器指向单个功能,但显然这是不可实现的 – Malyo

+0

这不是我上面说明的吗? click事件和keydown事件都会调用预定义的函数。 –

+0

在这个意义上说,我的主要目标是减少使用的代码,而我所寻找的技术会叠加触发器,然后只在一行中调用函数。虽然你是对的,但是你明显地误解了我的观点 – Malyo

0

您也可以触发click事件:

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

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

有趣的方法,但它不能解决我的问题,谢谢你 – Malyo

+0

@Malyo为什么不呢?它应该工作正常。 – VisioN

相关问题