私は開くことcjuidialogをトリガーする多数のリンクを含むページを持っている:「ダブル」イベントのダブルバインドを回避するにはどうすればよいですか?
<?php foreach($client->assignments as $clientProjects) { ?>
[...]
<a href="javascript:void(0);"
id="attach_file_project_<?=$clientProjects['project_id']?>"
class="attach_timesheet_file"
data-id="<?=$clientProjects['project_id']?>"
data-week-start="<?=$client->clientWeek[0]?>"
data-week-end="<?=$client->clientWeek[6]?>"
>Attach File</a>
[...]
<?php } ?>
これがダイアログをトリガするスクリプトです。ダイアログコンテンツは、AJAX呼び出しで生成されている:
$(".attach_timesheet_file").off('click').on("click", function(e) {
e.preventDefault();
$('#files-grid .delete').off('click');
var id = $(this).data("id");
var weekStart = $(this).data("week-start");
var weekEnd = $(this).data("week-end");
var url = "<?=Yii::app()->createUrl('admin/timesheetNew/attachTimesheet')?>";
$.ajax({
type: 'GET',
url:url + "?id=" + id + "&week_start=" + weekStart + "&week_end=" + weekEnd,
success: function(data) {
var modal = $("#attachFileModal");
modal.html(data);
modal.dialog('open');
return true;
}
})
});
ダイアログでは、&削除ファイルを追加することができます。ダイアログ内 、私は削除リンクが含まれますCGridViewウィジェットを使用しています:
$this->widget('zii.widgets.grid.CGridView', [
'id' => 'files-grid',
'dataProvider' => $dataProvider,
'columns' => [
[...]
[
'class' => 'CButtonColumn',
'template' => '{delete}',
'buttons' => [
'delete' => [
'label' => 'Delete',
'imageUrl' => null,
'url' => 'Yii::app()->createUrl("admin/timesheetNew/deleteFile", ["id" => $data["id"]])'
]
],
'deleteConfirmation' => 'Are you sure you want to delete this file?',
'afterDelete' => 'function(){
$("#files-grid").yiiGridView("update");
}'
]
]
]);
私は近く、開いて再オープンダイアログをするとき、私が直面してる問題がある、と私は削除したいですファイルを開くには、ダイアログを開いたときに確認ボタンを何度もクリックする必要があります。
$( "attach_timesheet_file")。off( 'click')を試してみましたが、イベントのバインドを解除するのには効果がありますが、#files-gridで同じことを試してみました。仕事も同様です。
アイデアを持っている人はいますか?
: \t $(「#ファイルグリッド.delete」)をオフ(「クリック」)。 これは、同じダイアログ内にある間にイベントバインドで同じ問題が発生し、追加/削除したファイルの数に応じてクリックを確認する必要がなくなるという問題を修正しました – kurt