2016-01-21 48 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