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