2014-03-02 23 views
2

我在一個頁面中有一些元素,我想覆蓋這些元素以禁用這些元素。通過封面覆蓋禁用更多的頁面中的一個元素

我有一個ajax調用成功,我用coverWithOverlay($('.disable'));來禁用所有具有.disable類的元素。

下面是函數:

function coverWithOverlay($element) { 
     var pos = $element.offset(); 

     var $overlay = $('<div class="inside"></div>').attr({ 
      title: 'this is disabled' 
     }).css({ 
      position: 'absolute', 
      backgroundColor: 'white', 
      opacity: 0.5, 
      top: pos.top + 'px', 
      left: pos.left + 'px', 
      width: $element.outerWidth() + 'px', 
      height: $element.outerHeight() + 'px' 
     }); 

     $(document.body).append($overlay); 

     return $overlay; 
    } 

它的工作原理,如果我有在頁面只是一個元素。我怎樣才能對幾個元素進行調查?
某些頁面有一個頁面有多個要禁用的元素。

+0

一個jsFiddle會幫助我們幫助你。另外,你是否考慮過CSS ['pointer-events'](https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events)屬性? – rvighne

+0

爲什麼這個'返回$覆蓋;'? – naveen

+0

是的,它不應該返回覆蓋。我只是用它來做其他事情。 – Mark

回答

2

你爲什麼不嘗試這樣的事情?

function coverWithOverlay($elements) { 
    $($elements).each(function() { 
     var $element = $(this); 
     var pos = $element.offset(); 

     var $overlay = $('<div class="inside"></div>').attr({ 
      title: 'this is disabled' 
     }).css({ 
      position: 'absolute', 
      backgroundColor: 'white', 
      opacity: 0.5, 
      top: pos.top + 'px', 
      left: pos.left + 'px', 
      width: $element.outerWidth() + 'px', 
      height: $element.outerHeight() + 'px' 
     }); 

     $(document.body).append($overlay); 
    }); 
} 

工作小提琴:http://jsfiddle.net/codovations/23FtA/


話雖這麼說, jQuery BlockUI plugin會做到這一點更通用的方式。
小提琴: http://jsfiddle.net/codovations/X5DfK/

+0

這jQuery的阻止用戶界面幫助,但爲什麼鼠標指針總是忙於此? – Mark

+0

上述功能的更改不起作用。 – Mark

+0

@Mark:忙碌的光標顯示頁面正在做一些動作,如果你想要一個正常的光標,只需將這個css的'.blockUI.blockOverlay {cursor:default}'加到你的頁面 – naveen