Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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
Events 克隆元素的jQuery子元素未响应事件_Events_Jquery - Fatal编程技术网

Events 克隆元素的jQuery子元素未响应事件

Events 克隆元素的jQuery子元素未响应事件,events,jquery,Events,Jquery,摘要 我正在使用jQuery克隆一个包含组(“groupBox”)的div(“boxCollection”),每个组都包含一组输入。输入在$(document.ready)处绑定了更改事件,但克隆的div内的输入不响应事件触发器。我不能让它在IE7、IE8或FF3中工作 以下是我的示例代码: HTML: <div class="boxCollection"><div class="groupBox" id="group_1"><input type="text"&g

摘要

我正在使用jQuery克隆一个包含组(“groupBox”)的div(“boxCollection”),每个组都包含一组输入。输入在
$(document.ready)处绑定了更改事件,但克隆的div内的输入不响应事件触发器。我不能让它在IE7、IE8或FF3中工作

以下是我的示例代码:

HTML:

<div class="boxCollection"><div class="groupBox" id="group_1"><input type="text"></input></div></div>
$(".groupBox[id*='group']").change(function(){
    index = $(this).attr("id").substring(6);
    if($("input[name='collection_"+index+"']").val() == "")
    {
        $("input[name='collection_"+index+"']").val("Untitled Collection "+index);
    }
});
$(".boxCollection:last").clone(true).insertAfter($(".boxCollection:last"));
jQuery克隆语句:

<div class="boxCollection"><div class="groupBox" id="group_1"><input type="text"></input></div></div>
$(".groupBox[id*='group']").change(function(){
    index = $(this).attr("id").substring(6);
    if($("input[name='collection_"+index+"']").val() == "")
    {
        $("input[name='collection_"+index+"']").val("Untitled Collection "+index);
    }
});
$(".boxCollection:last").clone(true).insertAfter($(".boxCollection:last"));
用于在动态创建的元素上自动放置事件处理程序:

$(".groupBox[id*='group']").live("change", function() {
  ...
});
不过,您似乎正在将
change()
事件处理程序放在
上(基于示例HTML)。此外,我建议不要为此使用属性选择器。您已为其设置了一个类,因此请改为:

$("div.groupBox ...")...
最后,您试图给每个文本输入一个唯一的名称。你不会说你的服务器端技术是什么,但很多(大多数?)会处理得更好。例如,在PHP中,您可以执行以下操作:


$\u POST
将包含一个包含三个值的数组的元素“box”。

我不确定这是否有效,但我将尝试一下,并说您需要分配实时事件

$(".groupBox[id*='group']").live('change', function() { });

IE6/7中的
change
live
可能会有问题,因此我建议您使用该插件来解决该问题。

live
已被弃用。
live
的替代品是
on
。这里有一些不同之处,因此如果直接替换不起作用,您可能需要做一些研究。
live
不推荐使用。