2016-11-15 3 views
1
var $inputPswd1 = $('#checkInput01'), 
    $inputPswd2 = $('#checkInput02'), 
    $inputPswds = $inputPswd1.add($inputPswd2); 

var bindOn = function() { 
    return typeof $(document)['on'] ? 'on' : 'bind'; 
}(); 

$inputPswds[bindOn]('keyup._passchk', function(e){ 
}); 

このコードスニペットは、誰もがこれらの線が何を言うvalidation.Can入力の一部として書かれている:

typeof $(document)['on'] 

$inputPswds[bindOn]('keyup._passchk', function(e) {}); 

checkInput01checkInput02は、二つの入力のidのです。

答えて

1
typeof $(document)['on'] 

これは、onメソッドがDOMオブジェクトで利用可能かどうかを確認するために使用されます。 jQueryバージョン1.7より前は利用できません。

$inputPswds[bindOn]('keyup._passchk', function(e) {}); 

これは、上記のステートメントの結果に応じて、いずれかon又はbindメソッド呼び出し、$inputPswds jQueryオブジェクトの要素にkeyupイベントハンドラを割り当てます。あなたが1.7以降のjQueryのいずれかのバージョンを使用している場合は、チェックはかなり冗長であり、単にon方法を持っていないのjQueryのon()

+0

思いません '$ .fn.on? 'on': 'bind''はもっと速くなりますか? – haim770

+0

しかし、ほとんどの場合、コード全体がほとんど役に立たないでしょう。 –

+0

マククロッサンありがとうございます。本当にありがとうございます。 – Aeverlite

0

古いバージョンを呼び出すために取り外すことができるという

注意。コードスニペットはtypeofを使用してonメソッドの存在をチェックします。 jQueryオブジェクトに.onメソッドがない場合は、.bindメソッドを使用してイベントハンドラをアタッチします。

また、コードにはバグがありますのでご注意ください。 typeofは文字列を返します。空でない文字列はJavaScriptの真偽値です。関数は常に.onを返します。関数の本体は次のようになります。

return typeof $(document)['on'] !== 'undefined' ? 'on' : 'bind'; 

別のオプションです:

return jQuery.fn.on ? 'on' : 'bind'; 
関連する問題