【发布时间】:2016-04-16 05:52:45
【问题描述】:
我想要实现的目标是使用jQuery 收集任何HTML 页面的所有CLASS css 样式,然后循环遍历每个classes 并收集height 、width、top 和 left 的每个 class,然后我会将其放入 Array 并记录到控制台。
下面是我目前使用代码的位置。我能够收集所有页面classes,但努力循环通过它们给我每个class 的height、width、top 和left。下面是代码,任何人都可以指导我正确的方向或可能给出一个如何构建它的例子吗?任何帮助将不胜感激:)
$(document).ready(function() {
// VARIABLES
var allClassNames = [];
var eachClassName = "";
// GET CLASS NAMES FROM THE HTML PAGE
$('[class]').each(function eachClassName(){
$.each($(this).attr('class').split(' '), function(i, className) {
if (className.length && $.inArray(className, allClassNames) === -1) {
allClassNames.push(className);
}
});
});
// GET THE CSS STYLING FOR EACH CLASS
function getStyleRuleValue(style, selector) {
for (var i = 0; i < document.styleSheets.length; i++) {
var mysheet = document.styleSheets[i];
var myrules = mysheet.cssRules ? mysheet.cssRules : mysheet.rules;
for (k = 0; k < allClassNames.length; k++) {
console.log(allClassNames[k]);
}
for (var j = 0; j < myrules.length; j++) {
if (myrules[j].selectorText && myrules[j].selectorText.toLowerCase() === selector) {
return myrules[j].style[style];
}
}
}
};
// I'M TRYING TO LOOP THROUGH THE CLASSES WHERE IT SAYS .TWO??
console.log( getStyleRuleValue('top', '.two') );
});
【问题讨论】:
-
您知道只需
$('.two').css('top')就可以做到这一点吗? -
@adeneo 正在为这个问题提供有价值的见解!更好的是,您可以将一组 css 属性名称发送到 jquery,它会为每个属性输出值。这意味着以下工作:
$('.two').css(['top', 'left', 'width', 'height']) -
非常感谢各位 :) 但如果 HTML 页面上有多个类。我如何能够遍历所有这些,显示值这可行吗? $(allClassNames[k]).css(['top', 'left', 'width', 'height'])
-
$(allClassNames).each(function() {... -
我尝试了以下操作,但在控制台中一直未定义,我做错了什么?: $(allClassNames).each(function() { console.log( $(allClassNames[k]). css(['top', 'left', 'width', 'height']) ); });
标签: javascript jquery css loops for-loop