Как вы выбираете элементы по их стилю?

Как с помощью jQuery найти элементы с определенным стилем (например, float: left), независимо от того, является ли это встроенным стилем или стилем, определенным в файле CSS?

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
27
0
14 348
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Используя функция фильтра:

$('*').filter(function() {
     return $(this).css('float') == 'left';
});

Замените "*" соответствующими селекторами для вашего случая.

Думаю, гораздо лучшее решение, чем мое.

Genericrich 14.01.2009 09:23

Да, +1 хороший ответ, но для здравомыслия и скорости можно уменьшить поле поиска до чего-то меньшего, чем '*'

Kent Fredric 14.01.2009 09:52

Вы должны использовать this.css.float вместо создания нового объекта jQuery для каждой итерации фильтра.

Alnitak 11.01.2014 14:51

@Alnitak Вам нужно сделать его объектом, если вы хотите использовать jQuery .css(). Причина в том, что .css() не является функцией javascript, поэтому вам все равно нужно будет использовать $(this). Вы можете использовать $(this).css.float, но он не найдет left, потому что float не является индексом. Если вы хотите использовать строгий this, вы должны выбрать его по-другому с чем-то вроде this.attributes.style.nodeValue.search(/float:(\s)?left/i) != -1, учитывая тот факт, что другие свойства могут быть установлены «влево». Так что даже с накладными расходами $(this).css('float') - лучший вариант IMO.

dhaupin 29.11.2016 00:07

Что ж, я не знаю, подхожу ли я к этому таким образом. Почему бы просто не переименовать эти элементы с согласованным идентификатором или именем класса и выбрать его?

Если это не вариант, это должно сработать:

this.getElementsByTagName('div').item(0).style.float = 'left';

Я думаю.

Так не пойдет. Ваш код выбирает все div, уменьшает выделение до первого div, а затем устанавливает его значение с плавающей запятой влево.

Ry Biesemeyer 14.01.2009 11:23

Это будет медленно. Вроде ДЕЙСТВИТЕЛЬНО медленно. Если вы знаете, что вам нужно выбрать все элементы с заданным стилем CSS, вы увидите гораздо лучшую производительность, применив одно дополнительное правило CSS к каждому элементу, а затем выбрав его по этому правилу.

Он будет НАМНОГО быстрее и удобнее для чтения.

CSS:

.float-left {float:left}

Javascript:

$('.float-left');

Я только что вернулся и перечитал этот вопрос еще раз, и теперь меня это немного смущает. Это определенно было бы лучшим решением. Не представляю, зачем мне нужно было выбирать такие элементы ...

nickf 16.11.2012 02:01

Другие вопросы по теме