[英]jQuery - Button click does not work
这里真的很简单,问我真是命中注定。 我只是无法解决。
在ajax调用中,我想显示项目列表。 每个项目都有一个按钮。
所以我把这个div放在HTML中:
<div id="calendar">
<div id="activity_wrapper">
<h4 class="activity-name"></h4>
<p class="activity_start"></p>
<p class="activity_end"></p>
<a class="start" id="start">Start Activity</a>
<a class="finish">Complete Activity</a>
<button id="delete-activity-button" class="delete" value="">Delete</button>
<button id="modify-activity-button" class="modify" value="">Edit</button>
</div>
</div>
现在使用Ajax在jQuery中创建清单,如下所示:
$.each(data, function (index, activity) {
var newActivity = activityDiv.clone();
var startTime = new Date(activity.startDateTime);
var endTime = new Date(activity.endDateTime);
newActivity.find(".activity-name").text(activity.name);
newActivity.find(".activity_start").text(startTime);
newActivity.find(".activity_end").text(endTime);
newActivity.find(".delete").val(activity.id);
calendar.append(newActivity);
});
然后最后我有了这个onclick:
$('.delete').click(function(e) {
var selected = $(this).attr('class') || $(this).attr('id');
var id = selected.val();
alert(id);
});
点击将不会注册。 我究竟做错了什么? 我相信这是我克隆活动类的方式所致。
谢谢。
您不应该在包含ID的元素上使用clone(),因为ID应该是唯一的。 另外,您的点击处理程序正在尝试使用ID,由于存在多个相同的ID,该ID的行为将不一致。
Clone()也不会克隆您附加到初始div的事件(除非您将其传递为“ true”),所以您的单击处理程序将不会触发,具体取决于您附加它的时间。 最好将点击处理程序附加到父级:
$('#calendar').on( 'click', '.delete', function(e) { ... } );
因此您不必担心在每个活动上都克隆事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.