繁体   English   中英

jQuery-按钮单击不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM