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”)这一个解决了我的问题,我使用实用方法。谢谢