JQuery Live vs On

时间:2013-03-09 08:20:59

标签: jquery

我有以下代码,可以正常使用Live

 $('.numbersonly').live('keydown', function (e) {
    var key = e.charCode || e.keyCode || 0;
    return (key == 8 || key == 9 || key == 46 || (key >= 37 && key <= 40) ||
           (key >= 48 && key <= 57) || (key >= 96 && key <= 105));
});

我改为On

 $('.numbersonly').on('keydown', function (e) {
    var key = e.charCode || e.keyCode || 0;
    return (key == 8 || key == 9 || key == 46 || (key >= 37 && key <= 40) ||
           (key >= 48 && key <= 57) || (key >= 96 && key <= 105));
});

但是我在min.js文件中遇到脚本错误。我错过了什么吗?

2 个答案:

答案 0 :(得分:6)

将事件委托给.numbersonlydocument的父母,否则

$(document).on('keydown', '.numbersonly', function (e) {
    var key = e.charCode || e.keyCode || 0;
    return (key == 8 || key == 9 || key == 46 || (key >= 37 && key <= 40) ||
       (key >= 48 && key <= 57) || (key >= 96 && key <= 105));
});

答案 1 :(得分:0)

如果您将事件与on绑定,则事件将仅为当前DOM元素(与您的选择器匹配)绑定 所以建议使用'之后''domready事件。

示例:

  $(document).ready(function(){
         ...
         $('selector').on('event',eventHandler(e){
             ...
         });
  });

如果使用live,则在修改dom树之后,事件将绑定到匹配的元素。 (例如,您使用ajax加载内容)