【问题标题】:Is it possible to combine the 'on' and 'click' jquery functions?是否可以结合 'on' 和 'click' jquery 函数?
【发布时间】:2012-04-19 09:34:48
【问题描述】:

基本上我有如下代码:

$('selector').on('click',function(){
    //Do something here
});
$('selector').click(function(){
    //Does exact same thing.    
});

可以结合这些吗?或者我会简单地创建一个从这两个绑定内部调用的函数?

抱歉,如果这个问题已经得到解答,我确实检查了建议的问题,但没有找到任何答案。

【问题讨论】:

  • 为什么你同时拥有.on('click').click()?他们不做同样的事情吗?
  • .on 函数用于添加到页面上的动态元素。点击功能适用于最初与页面一起加载的元素。
  • 您可以同时使用on()。无需将动态事件与页面上已有的事件分开。
  • 为什么投反对票?这可能更像是一个初学者等级的问题,但我们都从某个地方开始。如果你住在象牙塔里,知道它是建立在什么之上的。

标签: javascript jquery function click live


【解决方案1】:

$('selector').click() 只是$('selector').on('click') 的快捷方式

【讨论】:

  • 正确答案,你不应该尝试做一些不同的事情......或者他们两个都做同样的事情。始终使用.on
  • 现在是,但直到最近.click() 还是.bind() 的快捷方式。只有从 1.7.x 开始,.click() 才成为 .on() 的快捷方式。
【解决方案2】:
$('selector').on('click',function(){ //Do something here }); 

$('selector').click(function(){ //Does exact same thing.});

第二个是第一个的短格式。使用任何一种。推荐第一个

【讨论】:

    【解决方案3】:

    据我了解,从 jQuery 1.7 开始,.click() 只是 .on('click') 的简写。因此,如果需要,您可以直接使用 .on('click') 保存函数调用。

    查看 jQuery 源码:https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js

    【讨论】:

    • 我不太确定,我在使用单击添加动态元素时遇到了一些问题,事件与元素没有关联,我管理了 on('click')让它发挥作用
    【解决方案4】:

    您可以只创建一个函数,然后在两个回调中调用它:

    function doSomething()
    {
       alert("something");
    }
    
    $('selector').on('click',function(){
        // Do some stuff...
    
        // Do what should be done by both functions
        doSomething();
    });
    $('otherselector').click(function(){
        // Do some other stuff...
    
        // Do what should be done by both functions
        doSomething();   
    });
    

    根据 cmets 进行编辑

    如果两个回调应该做完全相同的事情,你可以将函数作为回调传递:

    function doSomething()
    {
       alert("something");
    }
    
    $('selector').on('click',doSomething);
    $('otherselector').click(doSomething);
    

    但在这种情况下,你也可以这样做:

    $("selector, otherselector").click(function()
    {
       alert("something");
    });
    

    【讨论】:

    • 为什么投反对票?我相信 OP 想从两个不同的回调中做同样的事情。问题不在于.on().click() 是否相同。
    • 我没有投反对票,但我猜是因为它们是相同的事件,不需要做这一切。
    • @elclanrs 仅当您想对两个回调执行完全相同的操作时,这才是正确的。
    • +1 以抵消烦人的反对票。但是答案并不完美 - IMO 您应该指出,如果您不小心,使用这两个事件可能会导致重复的函数调用(尽管我注意到您在代码中已经想到了这一点)
    • OP 确实想做同样的事情。它在问题中这么说。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多