2017-03-31 3 views
0

Jquery .on()関数とHandlebarsテンプレートに問題があります。私はハンドルテンプレートをwrotedし、文書に動的に彼を追加します。私は追加するとHandlebarsテンプレートでJqueryのクリックイベントが発生しない

$('.service').on('click', '.delete-service', function (e) { 
    alert('Clicked'); 
    //$(this).parent().parent().remove(); 
}); 

$('.services-wrapper').append(serviceTemplate({index : ++maxIndex})); 

をこのテンプレートにはボタンがあります。

<p> 
    <?= Html::buttonInput('Delete', [ 
    'class' => 'btn btn-danger delete-service', 
    'id' => 'js-delete-service', 
     'data' => [ 
     'index' => $index, 
    ], 
    ]) ?> 
</p> 

だから私は、このボタンのハンドラをクリックしwrotedこのテンプレートを文書化するには、イベントは発生しません。何が問題ですか?

答えて

1

としてあなたは最も近い親ラッパーが必要になる場合があります:あなたは、あなたのDOM構造に存在しない要素にイベントハンドラを添付しよう

$('.service-wrapper').on(...); 
+0

ハズレを試してみてください。 – illatif

+0

_働いていません....あなたはもっと詳しく説明できますか?現在の問題は何ですか?コンソールにエラーが表示されますか? – Jai

+0

何もありません。動的に追加されたボタンをクリックすると、エラーは発生せず、何もしません。しかし、ボタン(動的ではない)のアクション(アラート)は、正常に動作します。 – illatif

0

on('click')を追加する前にコンソールログ$('.service')を試してください。あなたは、イベントの委任を使用する必要があります。https://learn.jquery.com/events/event-delegation/ だからあなたの場合:

$(".service-wrapper").on("click", ".delete-service", function(event) { 
    event.preventDefault(); 
    alert('Clicked'); 
}); 
+0

$(ドキュメント)を試しました。動作しません。 DOMには要素が存在します。 – illatif

+0

'mousedown'や 'mouseover'のような別のHTMLイベントを使用しようとすると、何かイベントのバブリングが止まってしまう可能性があります。 – Oskar

+0

いいえ、 'mouseover'もうまくいきません:(なぜか、このデリゲートイベントは機能しません。 – illatif

0
$("body").on('click','.delete-service',function(){ 
    alert('Clicked'); 
}); 

は動作しません、この

+0

試してみました(とドキュメント、他の親要素)、nope – illatif

関連する問題