2016-01-21 54 views
0

我正在使用jquery對話框中的引導表,並在關閉對話框和釋放內存時遇到問題。讓我展示演示代碼:按鈕在jq對話框內容中無法正常工作(使用引導表關閉jquery對話框的兩種方式)?

方法1:jsFIDDLE這裏是兩個用於保存或取消對話框內容的按鈕代碼。它們編碼爲$.click()(不是通過對話框)。要看到問題休耕4個步驟:

  1. 單擊第一個複選框,並接受日期
  2. 執行相同的第二個複選框
  3. 取消勾選(日期字段了兩行是空的)
  4. 再次檢查一個複選框和接受日期

現在您會注意到,即使未點擊第二行,也會在每行的兩個字段中添加日期。當我玩這樣的玩法時,我甚至可以通過一次點擊就取消勾選這兩個複選框。

方法2:jsFIDDLE同樣的想法,但我使用jQuery的對話框中定義按鈕,如果你從上述同樣的操作步驟,你不會注意到這個問題 - 它工作得很好。

問題:我需要使用第一種方法來達到我自己的目的,但是如何解決這個內存問題呢?

+0

這是什麼都與內存泄漏呢? – dandavis

+0

我不是英語我可能會使用錯誤的術語,對不起我的英語。我只是想說,它記住了最後一步(行索引)。也許有什麼破壞對話,爲什麼第二種方法工作正常? – soonic

+0

我認爲'$('#submitBtn')。click'正在被多次應用,因爲它內部的console.log()會在第一次觸發,並在此之後觸發很多次... – dandavis

回答

3

您在代碼中存在範圍問題; 請試試這個更新Fidle

var currentRow = null; 

$("#pickdate").datepicker({dateFormat: "dd-mm-yy"}).datepicker("setDate",new Date()); 
$('#table').on('check.bs.table', function (e, row, $el) { 

currentRow = row; 

    $("#dialog").dialog({ 
       dialogClass: "no-close tt", 
       modal: true, 
       title: "Data zamknięcia", 
       width:189, 
     }); 


}); 

完全代碼見FIDLE

+0

非常感謝!我在想爲什麼要這樣做?它應該在我的演示中使用最新的row.id,並且只有一行,我在每次分配字段的值時 – soonic

+0

@soonic很高興我能提供幫助。這可能會更好地標記我的答案是正確的,以幫助其他人 – Sandcar

+0

這讓我瘋狂到現在。我沒有注意到,你也改變了'check.bs.table'功能的括號,所以這兩個按鈕(取消和確定)超出了它。 「行」的問題已經消失了,但後來我注意到在使用其他值時提交了幾次。呃......現在它真的工作:))我的第一個評論不再有效。我現在明白了:)再次感謝! – soonic