Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 脚本不执行附加的数据,而是执行表单中预先编写的html代码,而且脚本已经加载到页面顶部_Javascript_Php_Jquery_Html - Fatal编程技术网

Javascript 脚本不执行附加的数据,而是执行表单中预先编写的html代码,而且脚本已经加载到页面顶部

Javascript 脚本不执行附加的数据,而是执行表单中预先编写的html代码,而且脚本已经加载到页面顶部,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我有一个代码,我点击add,它会附加一些html,这些html有唯一的类名。代码是这样附加的 <script> var x = 1; $("#add").click(function() { $("#form").last().append('<input name="item' + x + '" placeholder="name" type="text" class="jj' + x + '"/><input type="text

我有一个代码,我点击add,它会附加一些html,这些html有唯一的类名。代码是这样附加的

<script>
    var x = 1;
    $("#add").click(function() {
        $("#form").last().append('<input name="item' + x + '" placeholder="name" type="text" class="jj' + x + '"/><input type="text" class="xx' + x + '" name="some' + x + '">');
        x = x + 1;
    });
</script>
我还为这些类编写了脚本,这些脚本已经在页面开始时加载

<script>
    var npp = "something";
    $(document).ready(function() {
        //o
        $(".jj").click(function() {
            $(".xx").val(npp);
        });
        //1
        $(".jj1").click(function() {
            $(".xx1").val(npp);
        });
        //2
        $(".jj2").click(function() {
            $(".xx2").val(npp);
        });
        //3
        $(".jj3").click(function() {
            $(".xx3").val(npp);
        });
    });
</script>
在控制台中,它没有显示任何错误,但是对于由append函数添加的元素,脚本也没有执行,对于表单中已经存在的html中的第一个元素,脚本也正在执行

<form id="form" action="..." method="post">
<input type="text" name="item" class="jj">
<input type="text" name="some" class="xx">
</form>
<button id="add">Add new field</button>
我的实际情况有所不同,但基本功能/逻辑相同。请告知为什么我的脚本不起作用。

请不要使用。单击“函数使用打开”可应用于添加到html代码中的任何元素

例如:

      $("body").on('click' , '.jj2' , function(){
        $(".xx2").val(npp);
      });  
而不是使用。单击要应用于添加到html代码中的任何元素的函数use on

例如:

      $("body").on('click' , '.jj2' , function(){
        $(".xx2").val(npp);
      });  

这里有一个很好的答案来解释你的问题:举例说明

我引述:

因为这些是动态添加到现有HTML中的元素,所以 您需要使用事件代理它 处理程序与文档的附件

因此,不是:

$(".jj").click(function(){
  $(".xx").val(npp);
});
做:


等等…

这里有一个很好的答案来解释你的问题:举例说明

我引述:

因为这些是动态添加到现有HTML中的元素,所以 您需要使用事件代理它 处理程序与文档的附件

因此,不是:

$(".jj").click(function(){
  $(".xx").val(npp);
});
做:


等等……

谢谢你的知识,我从来没有想过on event handler可能是解决方案。这也是有效的,比如在所有地方都使用相同的类创建一个输入null条目,然后在每次单击add时计算类的数量,然后使用for循环重写循环中的脚本,如果循环为forx=0,则类名称将为.jj'+x';xbecause在我当前的脚本中,它修复了脚本有效的最大元素数,是否有任何方法可以使它动态,就像每次通过“附加”创建新元素一样?脚本还附加了它们的类名?为什么需要不同的类名?你不能只用一个类名吗?然后计算那个类的元素?我在这些类上执行数学运算,这就是为什么我给每个元素一个不同的类名,而不是id,所以运算只限于那个特定的类,谢谢你的知识,我从来没有想过on event handler可能是解决方案。这也是有效的,比如在所有地方都使用相同的类创建一个输入null条目,然后在每次单击add时计算类的数量,然后使用for循环重写循环中的脚本,如果循环为forx=0,则类名称将为.jj'+x';xbecause在我当前的脚本中,它修复了脚本有效的最大元素数,是否有任何方法可以使它动态,就像每次通过“附加”创建新元素一样?脚本还附加了它们的类名?为什么需要不同的类名?你不能只用一个类名吗?然后计算那个类的元素?我在这些类上执行数学运算,这就是为什么我给每个元素一个不同的类名,而不是id,所以运算只限于那个特定的类