1
我正在使用asp.net webGrid,其中我有两个按钮,这两个按钮都打开相同的对话框(不同的内容)和一个对话框应该打开时,只有当点击当前行(而不是按钮点击)。我有这个if else检查点击元素是否是按钮。JQuery单击事件目标/按钮打开两个对话框
问题是,这加载页面后第一次正常工作。如果我只点击按钮,它会打开正确的对话框。但是,第一次点击一行后,按钮点击立即打开两个对话框。
下面的代码,
$('#grid').click(function(e){
if($(e.target).is(':button'))
{
$('.edit-db').live('click', function() {
$.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');
});
$('.delete-row').live('click', function() {
$.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');
});
}
else
{
$('tbody tr').live('hover', function() {
id = $(this).find('td:first').text();
$(this).toggleClass('clickable');
}).live('click', function() {
$("#devInfo").load("deviceInfo.cshtml/" + id).dialog('open');
});
}
});
有了这个按钮仍然在同一时间打开两个对话框(#devInfo和#对话框编辑)。当按钮只应该打开#dialog-edit并且该行点击#devInfo。 – 2012-02-29 09:03:03
在这种情况下,您需要通过向按钮处理程序添加“event.stopPropagation()”来停止按钮的传播 - 我已更新了我的答案。 – 2012-02-29 09:05:32
这样做的窍门。谢谢,你救了我的一天! – 2012-02-29 09:11:31