什么' typeof $(文件)[' on']'做?

时间:2016-11-15 08:58:28

标签: javascript jquery

var $inputPswd1 = $('#checkInput01'),
    $inputPswd2 = $('#checkInput02'),
    $inputPswds =  $inputPswd1.add($inputPswd2); 

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

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

此代码段是作为输入验证的一部分编写的。任何人都可以告诉这些行:

typeof $(document)['on'] 

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

checkInput01checkInput02是两个输入的ID。

2 个答案:

答案 0 :(得分:1)

typeof $(document)['on'] 

这用于检查DOM对象上是否有on方法。在jQuery 1.7之前,它将无法使用。

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

这将调用onbind方法,具体取决于上述语句的结果,并为keyup jQuery中的元素分配$inputPswds事件处理程序对象

请注意,如果您从1.7开始使用任何版本的jQuery,那么检查就非常多余,可以删除,只需调用on()

答案 1 :(得分:0)

旧版本的jQuery没有on方法。代码段使用typeof来检查on方法的存在。如果jQuery对象没有.on方法,则它使用.bind方法附加事件处理程序。

还要注意代码有错误! typeof返回一个字符串,非空字符串是JavaScript中的真值。该函数始终返回.on。函数体应该是:

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

另一种选择是:

return jQuery.fn.on ? 'on' : 'bind';