jquery 函数不适用于通过 innerHTML 写入的元素

jquery function doesn't work on element that write through innerHTML

本文关键字:元素 innerHTML 函数 不适用 适用于 jquery      更新时间:2023-09-26

我有一些jQuery代码是这样的:

$(function($) {
$('input.autonumeric').autoNumeric({aSep: ',', aDec: '.',vMax:'1000000000000'}); });    

使用该代码,每个具有 -class autonumeric输入文本只能使用数字输入。

但是当我从innerHTML写入输入文本标签时,它根本不起作用。 这是我编写代码的方式:

function edit(){
  var current = window.event.srcElement;
  while ( (current = current.parentElement) && current.tagName !="TR");
  var row = current.childNodes;
  td = row.item(0); var temp = td.innerHTML;
  td.innerHTML = "<input type='"text'" value='""+temp+"'" class='"autonumeric'" '>";
}

如何解决此代码? 注意:如果我的英语不够好,我很抱歉。

还必须为新添加的元素运行autoNumer。您可以在创建新输入时执行此操作,如下所示:

$(td).html($("<input type='"text'" value='""+temp+"'" class='"autonumeric'" '>").autoNumeric({'....'}));

或离开您的版本并运行

$('input.autonumeric').autoNumeric({aSep: ',', aDec: '.',vMax:'1000000000000'}); }); 

之后再次。

当 jQuery 插件方法.autoNumeric(...)运行时,它会影响 DOM 中当前存在的所有输入字段。调用edit()并创建新input.autonumeric时,必须再次调用.autonumeric(...)

添加 innerHTML 后,您应该再次调用 autoNumeric 函数。这是因为在页面加载时执行的代码只能在页面加载时"看到"DOM 中存在的元素。添加元素后,您必须将事件附加到该元素。

既然你已经在使用 jQuery,为什么不使用 jQuery 创建元素呢?

var e = $('<input type="text" />');
e.autoNumeric({aSep: ',', aDec: '.',vMax:'1000000000000'}); });
td.html(e);

当然,您需要调整代码的另一部分,以确保 td 是 jQuery 对象。