对话框上的长度错误

时间:2016-07-25 15:01:05

标签: javascript jquery jquery-ui events dialog

我正在使用jquery,我正在试着在关闭对话框之后听听有多少可能会打开,但是我知道有多少打开了。 例如:如果我有4并且我关闭一个它当我期望得到3时返回4,并且当我只打开1时返回2,最后当我关闭最后一个返回1时。 / p>

我做对了吗?我尝试查看文档并尝试查找类似afterClose的内容,但没有。

$( ".test" ).dialog({
          autoOpen: false,
          height:   "auto",
          width:    "auto",
          modal:    true,
          close:    function(e){
              $(this).destroy();
              // This returns wrong lenght
              console.log($('.test').length);
              if($('.test').length === 1) {
                        console.log($('.test a').text());
              }
          }  
});

3 个答案:

答案 0 :(得分:1)

你是如何获得这些数字的?除非您正在销毁呼叫

的对话框

$( '试验')。长度

总是会返回dom上的测试类数。你使用.remove()或其他东西删除对话框?需要更多信息。

当您关闭对话框时,它不会将其从DOM中删除。它只是隐藏它,你可以在页面底部看到隐藏的html。使用多个对话框的正确方法是使用instances对话框。但那件事很复杂。发布一些代码,特别是如何设置html以及如何删除对话框。

另外(因为我还无法评论),关闭事件会在窗口关闭时触发,但在隐藏窗口之前,这允许您两个地方取消关闭事件,beforeClose(通常用于某些验证)和关闭(也许你在哪里做一些物体或其他东西)。

答案 1 :(得分:0)

尝试更改jQuery选择器以搜索可见项目:

$( ".test" ).dialog({
      autoOpen: false,
      height:   "auto",
      width:    "auto",
      modal:    true,
      close:    function(e){
          // This returns wrong lenght
          console.log($('.test:visible').length);
          if($('.test:visible').length === 1) {
                    console.log($('.test a').text());
          }
      }  
});

Source

答案 2 :(得分:0)

@Transactional
public void insert(){

}

@Transactional(readOnly=true)
public void find(){

}