Фон селектора jQuery CSS

#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'})
  

jsFiddle

Комментарии:

1. При этом выбирается не только непосредственные дочерние элементы. Вы выбираете все подэлементы.

2. $("#jqt > *") не выбирает «дочерние элементы», $('*', "#jqt") делает. Теперь, когда вы отредактировали свой ответ, все в порядке.