Поиск по стилю
Привет.
Не подскажете как получить элементы страницы со стилем position: absolute ? Нигде не смог найти ничего подобного... |
(function(){ var tags = document.getElementsByTagName('*'); var abs_pos = []; for (var i = tags.length; i--; ) { if (getStyle(tags[i], 'position') == 'absolute') { abs_pos.push(tags[i]); } } console.info(abs_pos); // Get the computed css property function getStyle(element, cssRule) { if (document.defaultView && document.defaultView.getComputedStyle) { var value = document.defaultView.getComputedStyle(element, '').getPropertyValue( cssRule.replace(/[A-Z]/g, function(match, char) { return '-' + char.toLowerCase(); }) ); } else if (element.currentStyle) { var value = element.currentStyle[cssRule]; } else { var value = false; } return value; } }()); |
kidar2,
расскажите, пожалуйста, для чего Вам нужно это. e1f предложил Вам замечательный код, пожалуй, единственный возможный способ. Но само решение такой задачи больше смахивает на бенчмарк DOM и reflow. :) |
subzey, ну, я бы такое сделал, чтобы рекламу по-быстрому кикать букмарком :) можно ограничиться определенными тегами, а-ля iframe -- будет быстрее.
UPD Да, а причем тут reflow? Разве что я допилил много всего в DOM, а потом ВНЕЗАПНО решил проверить position :) |
Долго объяснять зачем это делается.
Я думал, что через jQuery можно без проблем сделать подобный запрос. |
kidar2, нельзя. И это правильно.
UPD Если это Ваш проект, то можно: - отказаться от выставления position в атрибуте style - выставлять его навешиванием некоторого класса, к примеру pos-abs: .pos-abs { position: absolute; } - в этом случае просто выбираем элементы с этим классом. |
Цитата:
Цитата:
|
интересно, как разработчик не может знать, какие у него на странице элементы имеют стиль position: absolute или могу иметь?
|
$('*[style*="absolute"]') |
exec, а если position не в style, а в css? Не защитано.
Skipp, например, разработчик делает bookmarklet. |
Цитата:
|
exec,
<div style="background: url(absolute.gif)"> :) |
var a = document.all || document.getElementsByTagName('*'), i = a.length, c = []; while (i--) if (a[i].style.position == 'absolute') c.push(a[i]); // c — массив со всеми элементами с абсолютной позицией |
exec,
вам уже писали: Цитата:
|
а что если position и там и там просматривать. А css() не видит разве в файле и на элементе, мне казалось этот метод всё просматривает...
например так: ... var pos = $('el').css('position'); ... |
sysya, конечно просматривает. То есть если в терминах jQuery то имеем:
$('*').filter( function() { if ($(this).css('position') == 'absolute') return true; else return false; } ).css('color', 'red'); |
Часовой пояс GMT +3, время: 21:58. |