摘要
我正在使用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>
jQuery事件:
$(".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);
}
});
jQuery克隆语句:
$(".boxCollection:last").clone(true).insertAfter($(".boxCollection:last"));
答案 0 :(得分:4)
使用live()
自动将事件处理程序放在动态创建的元素上:
$(".groupBox[id*='group']").live("change", function() {
...
});
您似乎在change()
上放置了<div>
事件处理程序(基于您的示例HTML)。另外,我建议不要使用属性选择器。你已经给了它一个类而不是:
$("div.groupBox ...")...
最后,您尝试为每个文本输入指定一个唯一的名称。你没有说你的服务器端技术是什么,但很多(大多数?)会比这更好地处理这个问题。例如,在PHP中,您可以执行以下操作:
$_POST
将包含一个元素“box”,其中包含三个值的数组。
答案 1 :(得分:1)
我不确定这是否会奏效,但我会试一试,说你需要分配直播活动
$(".groupBox[id*='group']").live('change', function() { });
您可能在IE6 / 7中遇到change
和live
的问题,因此我建议您使用livequery插件来解决该问题。