2013-10-24 3 views
2

У меня возникли проблемы с извлечением элементов по атрибуту style. У меня есть ul с несколькими элементами li, и я хотел бы найти тот, у которого есть атрибут стиля, имеющий значение display:list-item. Я попытался подойти к этому несколькими способами, включая следующие, но я продолжаю получать пустой объект. У меня нет проблем с атрибутом title. Не уверен, что я делаю неправильно.Как найти элемент по атрибуту стиля?

$('li[style*=display:list-item]') 

HTML:

<ul class="bjqs" style="height: 200px; width: 100%;"> 
    <li class="bjqs-slide" style="height: 200px; width: 100%; display: list-item;"> 
+0

Это похоже на плохую идею. вы уверены, что это необходимо? почему вы не можете просто получить '.bjqs-slide'? – lbstr

+0

У меня есть несколько элементов .bjqs-slide li, и я хочу что-то сделать с тем, у кого есть этот атрибут. – user2232681

ответ

2

Две проблемы:

  1. В вашем HTML есть пространство между "дисплеем:" и "элемент списка".
  2. Ваш селектор должен быть обернут котировками "".

Просто измените селектор, чтобы включить это место и завернуть его в кавычки:

$('li[style*="display: list-item"]') 

JSFiddle demo.

+0

Я также заметил, что я искал этот элемент, прежде чем он был создан подключаемым модулем, который, я считаю, усугубил мою проблему. Когда я включил пробел, как вы предложили, и переместил его на несколько строк, успех. Благодарю. – user2232681

+0

@ user2232681 рад помочь! :) –

5

Ваш селектор белого пространства чувствительным, учитывая, что у вас есть белый-пространство в атрибуте, вам нужно, чтобы в вашем селекторе, а также:

$('li[style*="display: list-item"]') 

Самый простой способ, который уменьшает проблемы точно соответствующие строки, если вы фильтрующие элементы в соответствии с конкретной CSS собственности, является использованиеfilter():

$('li').filter(function(){ 
    return $(this).css('display') === 'list-item'; 
}); 

Ссылки:

Смежные вопросы