我的 onclick 事件有效。但是,当该 onclick 事件在动态 HTML 上时,它不再起作用。如:什么都没有发生。
$(document).ready(function () {
$("#guestlist .viewguestdetails").click(function () {
$(".guestdetails[data-id='18']").toggle();
});
});
然后,我将此 HTML 动态添加到页面中:
<div id="guestlist">
<span class="completeguestdetails" data-id="18">(add your data)</span>
<div class="guestdetails" data-id="18" style="display: none;">
some data
</div>
</div>
但是,当我单击“(添加您的数据)”时,什么也没有发生。当我的页面中有静态 HTML 时,“guestdetails”div 的切换确实有效。似乎没有附加到动态插入的 HTML 的事件?
更新:
我在现有表中插入 ia 行的新动态 HTML。其他行已经将事件附加到 onclick 事件,例如:
$("span.guestattendance").click(function () {
if ($(this).hasClass('checkbox-on')) {
$(this).removeClass('checkbox-on').addClass('checkbox-off');
$("#guestday").removeClass('checkbox-on').addClass('checkbox-off');
}
else {
$(this).removeClass('checkbox-off').addClass('checkbox-on');
if ($("#guestceremony").hasClass('checkbox-on') && $("#guestreception").hasClass('checkbox-on') &&
$("#guestdiner").hasClass('checkbox-on') && $("#guestparty").hasClass('checkbox-on')) {
$("#guestday").removeClass('checkbox-off').addClass('checkbox-on');
}
}
});
由于用户可以插入多于 1 行,因此我没有使用 id,而是在我要插入的元素周围添加了一个包装器:
然后在 ready() 函数中:
$('.newrow_wrapper').on('click', 'span', function () {
$(".guestdetails[data-id='" + $(this).attr('data-id') + "']").toggle();
});
然而,第一个问题显然是,当我将 div 包裹在 tr 标签周围时,所有 tr 和 td 标签都会从插入的 HTML 中删除!此外,当我单击跨度查看 guestdetails 时,什么也没有发生。