ページにテーブルを挿入するサービスを呼び出します。
$('.lobSelect').click(function (e) {
e.stopPropagation();
var yOffset = $(this).position().top + $(this).height() + 'px';
var xOffset = $(this).position().left + 'px';
$('<div class="dropdown-wrapper"></div>')
.css('top', yOffset)
.css('left', xOffset)
.html('foo')
.prependTo('body');
$.ajax({
url: 'http://localhost:15485/api/lineofbusiness',
type: 'get',
dataType: 'json'
})
.done(function (data) {
var table = '<table class="multi-column-table">'
data.forEach(function (item) {
table += '<tr>';
table += '<td data-target-class="lobSelect">' + item.LOB_Code + '</td>';
table += '<td data-target-class="">' + item.LOB_Name + '</td>';
table += '</tr>';
});
$('.dropdown-wrapper').html(table);
})
.fail(function (jqXHR, textStatus, errorThrown) {
alert(errorThrown);
});
});
これがハンドラーをアタッチするのはなぜですか:
$('body').on('click', '.multi-column-table tr', function () {
//do stuff
});
しかし、これではありません:
$('.multi-column-table tr').on('click', function () {
//do stuff
});
編集
On() を使用すると、ハンドラーを将来注入される要素にバインドできると考えていました。$('body') を使用せずに、私が試みていることを行うより良い方法はありますか?