问题是这样的:
在我的应用程序中,我需要知道 SELECT 元素在 MATERIALIZE 框架下的 DOM 中是否可见。(请不要将这个问题标记为此处已经讨论过的问题,直到您阅读到最后。
到目前为止,我一直在使用document.getElementById('xx').offsetParent!==null来检查这一点,到目前为止它对我来说工作得很好。
但是,由于我将HTML代码迁移到Materializecss,我的可见性检查功能不再起作用。
这段代码在纯 HTML 中完美运行
<div class='input-field col s12'>
<select name='V18' id='V18' />
<option value='' disabled selected>Select</option>
<option id='V18_1' value='1'>Choice 1</option>
<option id='V18_2' value='2'>Choice 2</option>
<option id='V18_3' value='3'>Choice 3</option>
</select>
</div>
<script>
if
(document.getElementById('V18').offsetParent!==null){
alert('Select is visible');
}else{
alert('Select is NOT visible');
}
</script>
一旦我在 Materialize css 中初始化了 Selects,通过调用函数 $('select').material_select(),我的可见性检查函数就不再工作了。
我已经测试了这些链接上讨论的所有选项,它们都不适用于 Materialize 选择:
检查元素在 DOM 中是否可见
如何检查元素是否隐藏在jQuery中?
我的,问题是...如何检查 SELECT 元素在具体化框架中是否可见?似乎在初始化选择后,它们以某种方式丢失了一些关键的 Javascript 属性。
有人有同样的问题吗?
我为 materializecss 找到的解决方法是以与弧形按钮和文本不同的方式处理选择,
对于选择,我通过使用以下方法检测可见性:window.getComputedStyle(element)).display === 'none'
对于其余类型的元素,我使用以下方法检测可见性:"document.getElementById(element).offsetParent!==null">