jQuery回调 - 严格违规

Nic*_*ick 6 javascript jquery callback strict this

我得到的基本思想this在不是method在当strict mode概述这里,但它变得有点博学,是诚实的.所以,用更平淡的术语:

我有一个像这样的处理程序:

$('.myClass').one('keyup', function() {
    var $this = $(this);
    etc etc
});
Run Code Online (Sandbox Code Playgroud)

我想把它改成这个:

function myFunction () {
    var $this = $(this);
    etc etc
};
$('.myClass1').one('keyup', myFunction);
$('.myClass2').one('keyup', myFunction); etc
Run Code Online (Sandbox Code Playgroud)

它不喜欢它,因为strict mode因为我在this一个方法之外使用.我明白了.

但是,我需要myFunction与处理程序分开,因为(1)它附加到各种类/元素和(2)我用于在各个点.off().one('keyup', myFunction)重置one各种类的处理程序.

那么如何在不违反this业务的情况下绕过单独的回调函数呢?

T.J*_*der 6

在严格模式下,我得到的基本想法是不在方法中......

是的,但是你混淆了两个不相关的东西:严格模式和JSLint.它们在很大程度上是不相关的(除了JSLint可以选择要求严格模式).

您的代码在严格模式下没有问题.它完全有效且适当(因为jQuery使用的方式this).示例那里没有 "严格违规".

JSLint不喜欢它,但JSLint并不喜欢很多完全有效且合适的东西.JSLint检测到一些被广泛认可的问题组合(如缺少分号),以及Douglas Crockford从风格角度看不喜欢的东西.Crockford聪明且消息灵通,但不是每个人都同意他的风格选择.

Lint工具非常有用,是工具包的重要组成部分.通过将实体问题与样式问题混为一谈,JSLint的帮助不如它(在我看来)(虽然授予它是一个很好的线,使用JavaScript).您可以考虑使用JSHint,它可以让您更好地控制它检查的内容.