2

我必须存储display元素 ( none, block, inline...) 的属性值,以便以后恢复它。如果属性是从 CSS 样式表设置的,element.style.display则返回一个空字符串。display如何获得计算值?

该解决方案可以使用 jQuery 或其他库。

4

5 回答 5

3
var myDisplay = $('#YourControl').css('display');

这将为您提供您可以存储的显示属性

于 2012-04-06T05:22:49.810 回答
1

万一您没有 jQuery,您可以使用它getComputedStyle来检测显示属性值:

window.getComputedStyle(YOUR_DOM_ELEMENT).cssText.split('display: ')[1].split(';')[0]

如果你有 jQuery,那么.css('display')就像其他人所说的那样使用。

于 2012-04-06T05:36:17.520 回答
1

您可以将显示属性存储到每个元素的.data()

$('.box').on('click',function(){
    displayProp = $(this).css('display');           // read the .css display property
    $(this).data('storedDisplayProp', displayProp); // store it into element data
    $(this).css({display:'none'});                  // modify the .css display
});

并像这样检索它:

$('#undo').on('click',function(){
  $('.box').each(function(){
    $(this).css({display: $(this).data('storedDisplayProp') }); // read stored data and reset
  });
});

这是一个演示

于 2012-04-06T05:37:18.820 回答
1

在这种情况下,正如他们所说:显示属性是自动存储的,

var myDisplay = $('#YourControl').css('display');

如果您想在元素中存储其他数据,

$("#element").data('foo', 52);

恢复存储在此元素中的数据

var mystoredData = $("#element").data('foo');
于 2012-04-06T05:36:10.647 回答
0
$("#myElemId").css("display");
于 2012-04-06T05:18:22.537 回答