Вам не нужен обработчик кликов для вызовов метода live()
.Поскольку он у вас есть, live()
постоянно устанавливается для этих элементов после каждого щелчка.
Проверка is(':button')
является избыточной, поскольку элемент tr
в любом случае никогда не может быть кнопкой.
Кроме того, live()
устарела.Если вы используете jQuery 1.7+, вы должны использовать on()
, в противном случае вы должны использовать delegate()
.
Попробуйте это:
$('#grid').delegate('.edit-db', 'click', function (e) {
e.stopPropagation();
$.getJSON('/Methods/dbQuery/' + $(this).attr('id'), function (data) {
var lista = data;
$('#edit-id').val(lista.id);
$('#edit-nimi').val(lista.nimi);
$('#edit-ip').val(lista.ip);
});
$('#action-type').val('edit');
tyyppi = 'edit';
$("#edit").show();
$("#delete").hide();
$('#dialog-edit').dialog('open');
});
.delegate('.delete-row', 'click', function (e) {
e.stopPropagation();
$.getJSON('/Methods/dbQuery/' + $(this).attr('id'), function (data) {
var lista = data;
$('#edit-id').val(lista.id);
});
$('#action-type').val('delete');
$("#edit").hide();
$("#delete").show();
$('#dialog-edit').dialog('open');
});
.delegate('tbody tr', 'hover', function () {
id = $(this).find('td:first').text();
$(this).toggleClass('clickable');
})
.delegate('tbody tr', 'click', function () {
$("#devInfo").load("deviceInfo.cshtml/" + id).dialog('open');
});