我遇到了Jquery .on()函数和Handlebars模板的问题。我绞尽脑汁把手模板并在文档中动态添加他:
$('.services-wrapper').append(serviceTemplate({index : ++maxIndex}));
此模板有一个按钮:
<p>
<?= Html::buttonInput('Delete', [
'class' => 'btn btn-danger delete-service',
'id' => 'js-delete-service',
'data' => [
'index' => $index,
],
]) ?>
</p>
所以我想在这个按钮上点击了处理程序:
$('.service').on('click', '.delete-service', function (e) {
alert('Clicked');
//$(this).parent().parent().remove();
});
当我将此模板添加到文档时,单击事件不会触发。问题是什么?
答案 0 :(得分:1)
您可能需要一个最近的父包装器:
$('.service-wrapper').on(...);
答案 1 :(得分:1)
您尝试将事件处理程序附加到DOM结构中不存在的元素。在添加on('click')
之前尝试登录日志$('.service')
。您需要使用事件委派:https://learn.jquery.com/events/event-delegation/
所以在你的情况下:
$( ".service-wrapper" ).on( "click", ".delete-service", function( event ) {
event.preventDefault();
alert('Clicked');
});
答案 2 :(得分:0)
my_dict.iteritems()
试试这个