JQuery on event and delegation不';不能在jQuery函数中工作

JQuery on event and delegation不';不能在jQuery函数中工作,jquery,function,delegates,Jquery,Function,Delegates,这在动态填充的元素上不起作用。该网站是。如果您单击“添加更多”并键入数字,则它将不再起作用 (function( $ ){ $.fn.alphaSpace = function(e){ var arr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz "; var code; if (wind

这在动态填充的元素上不起作用。该网站是。如果您单击“添加更多”并键入数字,则它将不再起作用

            (function( $ ){
            $.fn.alphaSpace = function(e){
                var arr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ";
                var code;
                if (window.event)
                    code = e.keyCode;
                else
                    code = e.which;
                var char = keychar = String.fromCharCode(code);
                if (arr.indexOf(char) == -1){
                    return false;
                }

            }

 $('.sParent').on('keypress', '.siblings_fullname, .siblings_age',  function(e){
               return $(this).alphaSpace(e);
            });


问题似乎出在
$('.sParent')
中,在您的代码中元素
.sParent
也是动态创建的

即使在使用事件委派语法时,也应该将处理程序添加到事件注册时dom中已经存在的元素中。在您的情况下,我认为可以使用元素
#siblingParent

$('#siblingParent').on('keypress', '.sParent .siblings_fullname, .sParent .siblings_age', function (e) {
    return $(this).alphaSpace(e);
});

另外,我认为您可以简化
alphaSpace
方法,因为它不处理任何dom,您可以将其开发为实用方法,也可以简化它

$.alphaSpace = function (e) {
    // e.which is normalized by jQuery so no need to use e.keyCode
    var char = keychar = String.fromCharCode(e.which);
    //use a simple regex
    return /a-z\s/i.test(char)
}
然后像这样使用它

return $.alphaSpace(e);

是的,也许这就是问题所在,我没有看到它的到来,但感谢代码的改进。我会再检查一遍,然后给你一个。$(“#siblingParent”)这一个解决了我的问题,我使用实用方法。谢谢