JsRenderを使用してレンダリングした後、ページ上にあるDOM要素にクリックリスナーを添付しようとしていますが、少し難解です。JsRenderを使用してhtmlをレンダリングした後、クリックリスナーのJQueryが起動しない
マークアップ:
<button id="placeBid" data-attr-saleId="{{:id}}" class="btn btn-lg btn-add-to-cart"><span class="glyphicon glyphicon-shopping-cart"></span>Bid on this item</button>
jQueryのクリックでリスナーコード:
$(document).ready(function(){
$('#placeBid').on('click','#templateContainer', function() {
console.log('Clicked place bid')
const saleId = $(this).attr('data-attr-saleId')
if (!saleId) return
$.ajax({
url: '/sale/placeBid',
data: {
bidAmount: $('#amount').val(),
hotelSale: saleId,
currency: $('#currencies:selected').val()
},
method: 'POST',
success: function (res, ts, xhr) {
if (xhr.status == 200 && res.status == 200) {
$.toaster({priority: 'info',message: 'Succesfully bidded on sale'})
}else {
//handle error
}
}
})
})
});
htmlがjsRender経由templateContainer
テンプレートにレンダリングされますdocument.ready関数内
const html = template.render({viewLocalsHere});
$('#templateContainer').html(html)
ログconsole.log($('#placeBid'))
要素が検出されており、そこのonclickハンドラを取り付ける時には、しかし、ボタンをクリックすると、問題になる可能性がどのようなClicked place bid
をログに記録しないことを示しています?ありがとう
ああはい、あなたが正しいかもしれない、多分私は '$( '#のtemplateContainer')を意味した。上の( 'クリック'、 '#のplaceBid'、機能(){})'、どちらもそのあるいは単に$ ( '#placeBid')が変更後にハンドラを起動しています。 – Eladian
気にしない、私は古いバージョンがキャッシュされているかのようです。使用法を変更することでそれが機能しました。ありがとう! – Eladian