Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не работает селектор (https://javascript.ru/forum/jquery/12013-ne-rabotaet-selektor.html)

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 :(


Часовой пояс GMT +3, время: 20:44.