2014-01-27 49 views
0

我想阻止用户界面和解除阻止ajax调用的UI开始和停止。有人可以指导我如何实现这一点。屏蔽与jquery和css的屏幕

This is what i tried so far

jQuery代码

var $loading = $('#Processing').hide(); 
    $(document) 
     .ajaxStart(function() { 
      var $body = $('body'); 
      this.$mask = $('<div class="DialogMask"></div>'); 
      $body.append(this.$mask); 
      $loading.show(); 

     }) 
     .ajaxStop(function() { 
      var $body = $('body'); 
      this.$mask = $('<div class="DialogMask"></div>'); 
      $body.remove(this.$mask); 
      $loading.hide(); 
     }); 

CSS代码

div.DialogMask 
{ 
    padding: 10px; 
    position: fixed; 
    top: 0; 
    right: 0; 
    bottom: 0; 
    left: 0; 
    z-index: 50; 
    background-color: #606060; 
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); 
    -moz-opacity: .5; 
    opacity: .5; 
} 

回答

1

我宁愿做这样的说法:

<body> 
     Welcome 
     <div class="DialogMask"></div> 
    </body> 

而且为Javascript:

var $loading = $('#Processing'); 
    $loading.hide(); 
    $(document) 
    .ajaxStart(function() { 
     $('.DialogMask').show(); 
     $loading.show(); 
    }) 
    .ajaxStop(function() { 
     $('.DialogMask').hide(); 
     $loading.hide(); 
    }); 
2

以下行

this.$mask = $('<div class="DialogMask"></div>'); 
$body.remove(this.$mask); 

什么都不做。您正在创建一个新的 div与类DialogMask,然后将其从身体中删除,由于您从未将该特定的div添加到身体,该身体什么都不做。

你想要做的是选择现有的DialogMask并将其删除。

$body.remove('.DialogMask'); 

我不知道为什么你使用this.$mask变量,它不为你做任何事情。