У меня есть список и хочу получить значение фона последнего элемента.
<ul>
<li style="background: red;"></li>
<li style="background: blue;"></li>
<li style="background: yellow;"></li>
<li style="background: white;"></li>
</ul>
и я использую этот сценарий jQuery
var color = $( 'ul li' ).get(-1).css('background');
но он не работает. Я искал его, но ничего не нашел.
Может ли кто-нибудь помочь мне разобраться с проблемой.
EDITED: это не работает над IE, но я ошибаюсь. но не иначе?
$( 'ul li:last' ).css('background');
Все ответы, приведенные выше, будут содержать пустую строку.
Пожалуйста, проверьте:
var color = $('ul li').eq(-1).css('background-color');
Фактически, вы устанавливаете фоновый цвет, без фона.
JsFiddle, чтобы доказать: http://jsfiddle.net/7gxkp/
Ты можешь сделать:
var color = $( 'ul li:last' ).css('background');
Причина get(-1)
возвращает элемент DOM, который не имеет метода css, css - это метод объекта jquery, а не элемент Native DOM.
или выполните:
var color = $( 'ul li' ).get(-1).style.background;
Вы также можете использовать jquery .last()
var color = $( 'ul li' ).last().css('background');
Обратите внимание, что jquery css использует getComputerStyle
поэтому вы можете получить все свойства фона элемента (по умолчанию также пользовательский агент), а не только цвет. Если вам нужен только цвет с помощью jquery css
вы можете явно указать .css('background-color')
.
Причина, по которой ваш код не работает, заключается в том, что get()
возвращает узел DOM, который не имеет функции css()
. Вы ищете это:
$( 'ul li' ).eq(-1).css('background');
Я не уверен в использовании get, но вы можете использовать селектор CSS с вашим jquery, чтобы сделать это, как
var color = $( 'ul li:last-child' ).css('background');
Это должно быть проще! Дайте мне знать, если это сработает для вас! :)