使用jQuery我试图将datepicker事件处理程序添加到输入元素。多次添加datepicker事件处理程序
<div id="Box_tmpl" style="border:solid 1px #777; background:#ddd; display: none;">
<a class="remove-box" href="#">remove</a>
<div>
<label for="PeriodStart">Period (start):</label>
<input id="PeriodStart" class="start-end-date" name="period_start" readonly="readonly" />
</div>
<div>
<label for="PeriodEnd">Period (end):</label>
<input id="PeriodEnd" class="start-end-date" name="period_end" readonly="readonly" />
</div>
</div>
<a class="add-box" href="#" style="margin: 6px 0 10px auto;">add</a>
<div id="Boxes">
<div style="border:solid 1px #777; background:#ddd;">
<a class="remove-box" href="#">remove</a>
<div>
<label for="PeriodStart">Period (start):</label>
<input id="PeriodStart" class="start-end-date" name="period_start" readonly="readonly" />
</div>
<div>
<label for="PeriodEnd">Period (end):</label>
<input id="PeriodEnd" class="start-end-date" name="period_end" readonly="readonly" />
</div>
</div>
</div>
<script type="text/javascript">
$(function(){
$('.start-end-date').datepicker({ dateFormat: "yy-mm-dd" });
$('.remove-box').click(function(){
$(this).parent().remove();
});
$('.add-box').click(function(){
$('#Box_tmpl').clone().removeAttr('id').show().appendTo('#Boxes');
$('.start-end-date').datepicker({ dateFormat: "yy-mm-dd" });
$('.remove-box').click(function(){
$(this).parent().remove();
});
return false;
});
});
</script>
添加一个新的箱子。 在新框中添加删除框事件处理程序。 添加datepicker事件处理程序与新框不起作用。我不明白为什么... 使用$()创建一个新元素clone()是否继承旧元素的事件处理程序?如果是这样,可能是我的问题被多次添加日期选择器事件处理程序相同的元素...我运行的想法
代表团比克隆更有用。检查我的答案:) – Starx 2012-03-14 13:25:07
他询问克隆和绑定事件。这就是我所关注的。你指出正确的是,有更好的方法来解决这个问题。 – StilgarBF 2012-03-14 14:14:55
Thanx StilgarBF!参数'真'解决了我的问题。但是如果我不想复制事件处理程序呢?如果我想添加新的事件处理程序,该怎么办?特别是datepicker ... datepicker [demo](http://jsfiddle.net/XVHqJ/)不起作用...任何想法为什么? – esviko 2012-03-14 15:40:50