У меня есть страница кода, которую я хочу скопировать и изменить фоновый цвет на всех.box divs, которые имеют прозрачность <1 до прозрачности, но я не вижу элегантный способ сделать это.
Кажется, нет селектора стиля, например, есть селектор атрибутов:
$(‘element[attribute<value])
Я могу сделать что-то вроде
if($('.box').css('opacity') < 1) {
но тогда мне нужно "это", чтобы обратиться к элементу, который только что прошел тест непрозрачности <1.
Похоже, в jQuery должен быть элегантный способ сделать это, но я этого не вижу.
Спасибо за любые предложения.
вы можете использовать each
функцию jQuery для просмотра каждого согласованного элемента
пример из документации:
$( "li" ).each(function( index ) {
console.log( index + ": " + $( this ).text() );
});
Таким образом, вы можете сделать следующее:
$( ".box" ).each(function( index ) {
if( $(this).css('opacity') < 1 )
// do your stuff here
});
Используйте .filter()
чтобы уменьшить объект jQuery до элементов, соответствующих вашему желаемому условию:
$('.box').filter(function() {
return $(this).css('opacity')<1;
}).someMethod();
Я думаю, лучшим решением может быть использование фильтра...
$('.box').filter(function() {
return $(this).css('opacity') < 1;
}).css("opacity", 0);
Пример: http://jsfiddle.net/hMmN6/
Документация: http://api.jquery.com/filter/
Но вы также можете использовать цикл, как предложили другие... ИЛИ, если вы уже можете идентифицировать эти непрозрачные блоки, вы можете дать им класс или атрибут данных.
Вот пример, который содержит 4 разных решения: http://jsfiddle.net/hMmN6/2/ Кто-то должен увидеть, что быстрее.
Используйте функцию фильтра jQuery:
var boxes = $(".box").filter(function(){
return $(this).css("opacity") != 1;
});
JS Fiddle: http://jsfiddle.net/UQ4gy/