我的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是现有表格中的一行。其他行已经附加了 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');
}
}
});
由于用户可以插入多行,我没有使用id,而是在我要插入的元素周围添加了一个包装器:
然后在ready()函数中:
$('.newrow_wrapper').on('click', 'span', function () {
$(".guestdetails[data-id='" + $(this).attr('data-id') + "']").toggle();
});
然而,第一个问题是,当我在tr标签周围包裹div时,插入的HTML中所有的tr和td标签都被删除了!另外,当我点击span以查看guestdetails时,什么也没有发生。