내가 열려면 cjuidialog를 트리거 다수의 링크가 포함 된 페이지있어 :'double'이벤트 이중 바인딩을 피하는 방법은 무엇입니까?
<?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 } ?>
이 대화 상자를 트리거하는 스크립트입니다. 대화 내용은 아약스 호출에서 생성되는 :
$(".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"). 벗어났습니다 ('클릭'). 이벤트 바인딩을 해제하는 데는 효과가 있지만 도움이되지 않았고 #files-grid에도 동일하게 시도했습니다 .delete didn ' 또한 잘 작동합니다.
아이디어가 있습니까?
이미 추가가 이루어졌다, 고정 : \t $를 ('# 파일 그리드 .delete') 오프 ('클릭'). 동일한 대화 상자에있는 동안 이벤트 바인딩에 동일한 문제가 발생하여 추가/삭제 한 파일 수에 따라 점점 더 많은 확인을 클릭해야하는 문제가 해결되었습니다. – kurt