Можно ли выбрать все поплавки на странице с помощью JQuery? - PullRequest
5 голосов
/ 08 мая 2009

Я пытаюсь выбрать все элементы, которые имеют CSS-стиль: float: left или float: right. Я вижу селекторы атрибутов, доступные в документации JQuery, однако меня интересуют свойства CSS, а не атрибуты.

Возможные варианты использования такой функции: выбор отображения всех элементов: ни одного элемента на странице.

Ответы [ 3 ]

5 голосов
/ 08 мая 2009

Это должно сделать трюк без взлома класса:

$("*").filter( function() {
    return /^(left|right)$/.test( $(this).css("float") )
})

Кстати, у jQuery уже есть хороший способ найти все display: none элементы:

$(":hidden")
5 голосов
/ 08 мая 2009

Создание новых селекторов довольно забавно, поэтому я сделал это:

Использование:

: hasCssAttr (свойство, значение ...)

Property - это свойство css, которое вы хотите использовать для сравнения

value - это значения, с которыми вы хотите сопоставить (у вас может быть более одного)

$(':hasCssAttr(float, left)').css('float', 'right');

Источник Луки:

$.expr[':'].hasCssAttr = function(objNode, intStackIndex, arrProperties, arrNodeStack) {
  var arrArguments = arrProperties[3].split(','); 
  var cssPropVal = $(objNode).css(arrArguments[0]); // need for speed
  for (var i = 1 ; i < arrArguments.length ; i++)
    if (cssPropVal == arrArguments[ i ].replace(/^\s+|\s+$/g,""))
        return true;      
  return false;
}

По сути, это выбирает любое свойство ol 'css. Я полагаю, вы могли бы устранить цикл, если бы вы хотели только одно значение, вроде ненужного. Кроме того, мне интересно, было бы интереснее сделать это в eval, чтобы вы могли проводить численные сравнения. Тем не мение. Вот оно

Попросите Бена помочь мне.

1 голос
/ 08 мая 2009

Одной из идей было бы применить плавающий стиль через CSS, после чего вы могли бы выбрать имя класса и выполнить показ / скрытие при необходимости.

 <style>
    .right { float: right; }
    .left { float: left; }
 </style>

 <div class='left'>...</div>
 <div class='right'>...</div>

  $('.left,.right').hide();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...