Есть некоторые решенные проблемы, но хочу спросить, может быть, вот другое решение. Здесь ситуация.
Получил страницу aspx. С некоторым кодом за функциями, которые получают данные из БД. Вызванные функции и данные возвращаются через JQ в таблицу. Данные, подготовленные сервером в математическом формате HTML.
$.ajax({
type: "POST",
url: "somePage.aspx/foo",
data: "{ 'Id' : '" + ID + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
$("#brandTable").html(msg.d);
}
Каждая возвращаемая строка выглядит так (как есть):
<tr btcsId='152' id='btcsId_152' onclick='brandClick(9,24,152)'>
<td class='DataGridItem' style='padding:3px; margin:0;font-weight:bolder;'>something<input type='hidden' id='brandID_btcsId152' value='24' brandName='something'/></td>
</tr>
таблица разметки:
<table class="DataGrid" id="brandTable" style="padding: 0px; margin: 0px; width:100%;border-collapse:collapse;table-layout:fixed;word-wrap:break-word;" border = "0" cellspacing="0" cellpadding="0">
</table>
Итак, проблема была в том, что событие onclick не сработало только в ie7. ie8, ie9 работает нормально. После некоторых размышлений я решил добавить этот код сразу после заполнения таблицы. Другими словами, событие перезапуска для каждой строки.
$("[id^='btcsId_']").each(function () {
$(this).click(function () {
var thisID = $(this).attr("id");
brandClick(specialityID,$("#"+thisID +" > TD > INPUT").val(),$(this).attr("btcsId"));
});
});
После этого, кажется, работает нормально. Но правильно ли это? Может быть, есть какой-то другой способ?