【问题标题】:How to make .unclick = unbind('click' in jquery?如何在 jquery 中制作 .unclick = unbind('click'?
【发布时间】:2009-06-24 18:56:48
【问题描述】:

我想要 unbind('click' 的快捷表示法。我希望 .unclick 是 unbind('click'.

【问题讨论】:

  • 花超过 5 秒的时间来表达你的问题,它实际上可能类似于一个问题 :)
  • 什么?是否要取消绑定点击事件?
  • @TStamper - 我想他想取消绑定一个 unclick 事件处理程序。不是很明显吗?
  • @Karim79- 对我来说不是,如果这很明显,我会编辑问题更清楚
  • @TStamper - 我只是在开玩笑。这是非常不明显的:)

标签: javascript jquery


【解决方案1】:

我想你想要这样的东西:

$.fn['unclick'] = function(){
   return this.unbind('click');
};

现在下面两行是等价的:

$(...).unbind('click');
$(...).unclick();

对于所有事件(从jQuery source 复制的事件列表):

var events = ('blur,focus,load,resize,scroll,unload,click,dblclick,' +
              'mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,' +
              'mouseleave,change,select,submit,keydown,keypress,keyup,error'
             ).split(',');

jQuery.each(events, function(i, name){
    jQuery.fn['un' + name] = function(){
        return this.unbind(name);
    };
});

【讨论】:

  • +1 看起来不错,但认为您的意思是取消点击而不是取消点击 :)
  • 你不应该调用extend...吗?
  • @Josh:老实说,我不知道调用 extend 和我正在做的事情之间的区别(我是一个 javascript 新手)。我想指出 jQuery 源代码同时使用了这两种技术。你能解释一下调用extend的好处吗?
  • @Stephan202:扩展是 jQuery 想要的方式。理论上它是相同的,但根据 jQuery 的实现,它也可能不同。 (如果已经有取消链接功能等会怎样?)
  • 没有区别。使用 jQuery.extend() 只对添加多个插件有用。
【解决方案2】:
jQuery.fn.extend({
      unclick: function() {
        return this.unbind('click');
      }
});

【讨论】:

  • 不,使用 extend() 没有任何好处...只是更多的字符。
猜你喜欢
  • 2010-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多