【问题标题】:Combine 2 Different Selectors With 2 Different Events将 2 个不同的选择器与 2 个不同的事件相结合
【发布时间】:2012-11-15 15:51:04
【问题描述】:

我有两个选择器,我希望将它们组合成一段代码来处理两个不同的选择器。

我目前的代码如下:

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

但这似乎不起作用。

【问题讨论】:

标签: jquery jquery-selectors


【解决方案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());
});

从代码中可以清楚地看出,我想将相同的函数绑定到单击按钮和 keydown 上的 textField #voucher_id,但是通过使用上述方法,发生的事情很明显,我得到了在按钮上的keydown 上激活了相同的功能,这是不可取的行为。

如何避免这种情况并仍然结合两个选定的代码。

【讨论】:

    【解决方案2】:

    组合选择器 (as mentioned by @mike) 只需用逗号分隔选择器值 $("#button_a,#button_b")。事件可以用空格分隔 -

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

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

    我在这里的现场演示使用了相同的技术,但使用了 mouseenterclick 事件。

    Demo

    【讨论】:

    • 啊,你是对的。我想我应该改写我的目标。 “按钮 B”使用 dblclick,而按钮 A 只是单击事件,但如果有意义的话,两个事件都使用相同的代码。
    • 那么我的例子仍然对你有用。如您所见,我没有在上面的代码中编写回调函数,我所做的只是引用了函数handler(),这是一个自定义函数。所以你可以简单地将两个事件指向同一个处理函数。
    • 是的,但是按钮 B 也会收到点击事件,而不仅仅是双击。
    【解决方案3】:

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

    $("#button_a").on("click", function(){
         myFunc(this);
    });
    
    $("button_b").on("dblclick", function(){
         myFunc(this);
    });
    
    function myFunc(elem){
        // Your code here
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-17
      • 2022-01-17
      • 2017-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 2022-01-21
      相关资源
      最近更新 更多