#jquery #html #css
#jquery #HTML #css
Вопрос:
Я должен сделать следующий простой CSS-селектор с помощью jQuery, но я не могу :
"#test > *"
Я пробовал многими способами, но я просто не могу этого сделать!
$("#jqt > *")
или
$('*',$("#jqt")).css()
последний, казалось, работал, но я понял, что это shoudnt!!
Как я должен сделать этот простой выбор, чтобы добавить очень простое свойство CSS ( background-image
и font-family
)????
Заранее спасибо
Комментарии:
1. Какого результата вы пытаетесь достичь?
Ответ №1:
Вместо $("#jqt > *")
того, чтобы пытаться $("#jqt").children()
Ответ №2:
Я предполагаю, что вы пытаетесь применить css только к «прямым дочерним элементам» #jqt
.
Вот трюк, позволяющий избежать применения вашего стиля к дочерним элементам:
HTML:
<div id="jqt">
<a>link</a>
<p>paragraph</p>
<div>div</div>
<div class="no_inherit">
<a>sub link</a>
<p>sub paragraph</p>
<div>sub div</div>
</div>
</div>
CSS:
.mystyle {
background-image: url(img.png);
font-family: "courier";
}
jQuery:
$('#jqt').children().not(".no_inherit").addClass('mystyle');
Если вы удалите not(".no_inherit")
, CSS будет применен к элементам в элементах #jqt > div
, поэтому все элементы будут стилизованы.
Скрипка здесь: http://jsfiddle.net/7AM5Z/1 /
Ответ №3:
Это работает, если вы хотите выбрать непосредственных дочерних элементов:
$("#jqt > *").css({ 'background-image' : 'url(...)', 'font-family' : 'arial'})
Комментарии:
1. При этом выбирается не только непосредственные дочерние элементы. Вы выбираете все подэлементы.
2.
$("#jqt > *")
не выбирает «дочерние элементы»,$('*', "#jqt")
делает. Теперь, когда вы отредактировали свой ответ, все в порядке.