我正在努力将JQuery项目覆盖为纯JavaScript,并且我受制于以下代码。
$(".element-has-class:visible")
我认为也许可以遵循这些原则来捕获所有可见元素(对于我的项目列表项),但是我没有运气:
function functionName (){
var elementsOnShow = document.getElementsByClassName('element-has-class').find(isVisible);
}
function isVisible(element) {
return element.style.display === 'block';
}
(block
已在CSS中设置)。无论如何,是否将所有可见元素都包含在一个变量中?
您可以将nodeList转换为Array(在此处了解更多信息),这将允许您使用它Array.prototype.filter()
来获取可见元素:
function functionName (){
var myNodeList = document.getElementsByClassName('element-has-class'),
myArray = [].slice.call(myNodeList),
elementsOnShow = myArray.filter(isVisible);
}
function isVisible(element) {
return element.offsetWidth > 0
|| element.offsetHeight > 0
|| element.getClientRects().length > 0;
}
isVisible
您在上面看到的功能是从jQuery 2.2.4的源代码中提取的(版本3.XX与IE 8及更低版本不兼容)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句