Вход

Просмотр полной версии : Не работает селектор


Kenshi25
26.09.2010, 13:00
Он должен во все четные элементы li, не находящиеся внутри ul класса disabled прописать какой-нибудь код.

$("#omg li:odd").not(parent("ul.disabled")).html("lalala");

Но увы, не работает(

exec
26.09.2010, 13:12
$(':not(ul.disabled) #omg li:odd').html( 'Бла бла бла' );

Kenshi25
26.09.2010, 13:20
Есть проблема при таком способе, если внутри li есть еще ul, селектор игнорирует его содержимое, а должен также добавлять текст в li внутри этого ul

exec
26.09.2010, 13:30
$('#omg li:odd, ul', ':not(ul.disabled)').html( 'Бла бла бла' );

Kenshi25
26.09.2010, 15:51
:not(ul.disabled) он теперь почему-то игнорирует, во все подрят текст вставляет(

monolithed
26.09.2010, 21:38
<head>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>

<script type="text/javascript">
$(function(){
$('div :not(.disabled:parent) li').html('text');

});
</script>
<div>
<ul>
<li></li>
<li></li>
<li>
<ul>
<li></li>
<li></li>
</ul>
</li>
</ul>
<ul class="disabled">
<li></li>
<li></li>
</ul>
</div>
</body>

Kenshi25
27.09.2010, 13:28
В общем покажу на конкретном примере:
Нужно расскрасить списки разным текстом красным и синим, но происходит следующее:
1) Списки третьей степени вложенности расскрашиваются только синим
2) А списки внутри disabled глубже чем первой вложенности раскрашиваются как обычно, хотя не должны.

<head>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>

<script type="text/javascript">
$(function(){
$('div :not(.disabled:parent) li:even').css('color', 'red');
$('div :not(.disabled:parent) li:odd').css('color', 'blue');
});
</script>
<div>
<ul>
<li>red</li>
<li>blue</li>
<li>red
<ul>
<li>blue
<ul>
<li>red</li>
<li>blue</li>
<li>red</li>
</ul>
</li>
<li>blue</li>
<li>red</li>
</ul>
</li>
</ul>
<ul class="disabled">
<li>black
<ul>
<li>black</li>
<li>black</li>
</ul>
</li>
<li>black</li>
</ul>
</div>
</body>

Kenshi25
27.09.2010, 18:50
Ну что никто помочь не сможет?))))

Octane
27.09.2010, 20:19
$(function(){
var $items = $("div > ul:not(.disabled) li");
$items.filter(":odd").css("color", "#f00");
$items.filter(":even").css("color", "#00f");
});
так?

e1f
27.09.2010, 20:59
А если еще использовать метод .end, то можно и без кеширования обойтись. :)
Но вообще надо убивать за подобные задачи, для которых нужен такой "unobstructive"-javascript :(