Jquery click事件不会使用Handlebars模板触发

时间:2017-03-31 11:57:02

标签: javascript php jquery html frontend

我遇到了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();
});

当我将此模板添加到文档时,单击事件不会触发。问题是什么?

3 个答案:

答案 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()

试试这个