将2个不同的选择器与2个不同的事件相结合

时间:2012-11-02 06:35:38

标签: jquery jquery-selectors

我有两个选择器,我希望在一段代码中组合以处理两个不同的选择器。

我目前的代码如下:

var button_b=$("#button_b");
$('#button_a', button_b).on("click, dblclick", function(){
//do stuff
});

但这似乎不起作用。

3 个答案:

答案 0 :(得分:1)

我仍然在寻找一种方法来提及2个单独的选择器,并将它们与单个代码行中的单独事件绑定

考虑以下情况

$('input:text#voucher_id, button.nav').bind('click keydown', function(e){ // find nav functions to keydown events on #voucher_id and nav buttons
    reload(e,'<?php echo $aVeryLongUrlDynamicallyGenerated; ?>', $('#voucher_id').val(),$('#doctype').val());
});

从代码中可以清楚地看到,我希望绑定相同的函数来单击textField keydown上的按钮和#voucher_id,但是通过使用上面提到的方法,正在发生的事情是显而易见的。我在按钮上的keydown上激活了相同的功能,这是不可取的行为。

如何避免这种情况,并仍然将两个选定的代码组合在一起。

答案 1 :(得分:0)

组合选择器(as mentioned by @mike)很简单,可以将选择器值$("#button_a,#button_b")分开。事件可以用空格分隔 -

var selector = '#bar';
$("#foo,"+selector).on("click dblclick", handler);

这两个事件很难捕捉到同一个元素。双击的第一次单击将被拾取并调用处理程序,在单击单击调用处理程序之前,您将无法双击。

我的实时演示使用相同的技术,但有mouseenterclick个事件。

Demo

答案 2 :(得分:0)

如果是这样的话,为什么不这样做,你有这些元素的相同处理程序和不同事件..

$("#button_a").on("click", function(){
     myFunc(this);
});

$("button_b").on("dblclick", function(){
     myFunc(this);
});

function myFunc(elem){
    // Your code here
}