Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Поиск по стилю (https://javascript.ru/forum/jquery/8680-poisk-po-stilyu.html)

kidar2 08.04.2010 19:00

Поиск по стилю
 
Привет.
Не подскажете как получить элементы страницы со стилем
position: absolute ? Нигде не смог найти ничего подобного...

e1f 08.04.2010 19:38

(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;
}
}());

subzey 08.04.2010 21:16

kidar2,
расскажите, пожалуйста, для чего Вам нужно это.

e1f предложил Вам замечательный код, пожалуй, единственный возможный способ. Но само решение такой задачи больше смахивает на бенчмарк DOM и reflow. :)

e1f 08.04.2010 21:22

subzey, ну, я бы такое сделал, чтобы рекламу по-быстрому кикать букмарком :) можно ограничиться определенными тегами, а-ля iframe -- будет быстрее.

UPD Да, а причем тут reflow? Разве что я допилил много всего в DOM, а потом ВНЕЗАПНО решил проверить position :)

kidar2 08.04.2010 21:28

Долго объяснять зачем это делается.
Я думал, что через jQuery можно без проблем сделать подобный запрос.

e1f 08.04.2010 21:30

kidar2, нельзя. И это правильно.

UPD Если это Ваш проект, то можно:
- отказаться от выставления position в атрибуте style
- выставлять его навешиванием некоторого класса, к примеру pos-abs:
.pos-abs {
  position: absolute;
}

- в этом случае просто выбираем элементы с этим классом.

x-yuri 09.04.2010 00:31

Цитата:

Сообщение от kidar2
Нигде не смог найти ничего подобного...

неспроста

Цитата:

Сообщение от kidar2
Долго объяснять зачем это делается.

если неизвестена задача, как ее можно решить? Ну ладно... как ее можно нормально решить?

Skipp 09.04.2010 09:40

интересно, как разработчик не может знать, какие у него на странице элементы имеют стиль position: absolute или могу иметь?

exec 09.04.2010 10:23

$('*[style*="absolute"]')

e1f 09.04.2010 12:58

exec, а если position не в style, а в css? Не защитано.

Skipp, например, разработчик делает bookmarklet.


Часовой пояс GMT +3, время: 13:27.