私はasp.net webGridを使用していますが、私は同じダイアログ(異なるコンテンツを含む)と現在のクリック時にのみ開くダイアログボタンのクリックからではありません。クリックされた要素がボタンであるかどうかを調べるelse if elseがあります。JQueryのクリックイベントターゲット/ボタンは2つのダイアログボックスを開きます
問題は、このページを読み込んだ後に初めてうまく動作することです。私がボタンだけをクリックすると、正しいダイアログが開きます。しかし、最初に行をクリックした後、ボタンクリックは両方のダイアログを同時に開きます。
は、ここであなたがlive()
メソッド呼び出しの周りのクリックハンドラを必要としない
$('#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');
});
}
});
:
はこれを試してみてください。ボタンが#dialog-editを開くだけで、行が#devInfoをクリックすると仮定します。 –
その場合、ボタンハンドラに 'event.stopPropagation()'を追加してボタンの伝播を止める必要があります。私は自分の答えを更新しました。 –
これはトリックでした。ありがとう、あなたは私の日を救った! –