jQuery баг №2. 
		
		
		
		В предыдущей теме я обратил внимание на баг с командой "+" селекторов. Оптимизируя свои селекторы, задался вопросом а не будет ли бага с командой ">", помня логику jQ подумал будет и решил проверить: 
	
<span>
  <i></i>
  <span>
    <i>
      <span>
        <div>
          <b>
            <a></a> <!-- Должен выбрать этот -->
          </b>
          <a></a> <!-- и этот -->
        </div>
      </span>
    </i>
    <span>
      <div>
        <b>
          <a></a> <!-- и этот -->
        </b>
        <a id='#test'></a> <!-- и этот -->
      </div>
    </span>
  </span>
</span>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.min.js">
<script type="text/javascript">
A = $('BODY > SPAN A');
alert('элементов:'+A.length);
</script>
Запустив этот пример увидел результат: 0 элементов в выборке. запускать на IE6 что бы сработал сам JQ а не querySelectorAll В peppy, DomAssistant и CarbonJS такого бага нет. Вы все еще пользуетесь jQ? ;)  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
  | 
	
		
 
$("body > span").find("a")
UPD нет, я стараюсь пользовать поменьше тегов, побольше классов.  | 
	
		
 Цитата: 
	
 А изза этого гибкость написания селекторов падает.  | 
	
		
 Баг появляется, когда в дочерних узлах есть такой же тег, как перед child-selector? 
	
<body>
    <span>
        <strong>
            <span><!-- если бы не было этого span, то элемент был бы найден -->
                <em>
                    <a href="#">a</a>
                </em>
            </span>
        </strong>
    </span>
    <script type="text/javascript">
         alert($("body > span a").size());
    </script>
</body>
[zanude]span не должен находится непосредственно внутри body, как и blockquote, body должен содержать только блочные контейнеры.[/zanude]  | 
	
		
 Octane, если порытбся в коде сиззл, то видно, что: 
	мы выбираем крайний правый, потом по одному идем, и находим предка-удовлетворителя (первого попавшегося, это ключевой момент). В результате хватаем не тот спан, который лежит в боди, а ближайший Вуаля - бочина.  | 
	
		
 То есть Sizzle сначала найдет<a>, потом поднимется вверх до первого попавшегося <span> и проверит, вложен ли он непосредственно в <body>? Железная логика конечно… 
	 | 
	
		
 Немного не так. Он смотрит: ага, все а я уже нашел, гут. Теперь мне надо проверить, какие из них содержатся в спанах (без учета вложенности). Заодно и подобрать первый такой спан для каждой а, для доказательства. Потом зырк -- ооо, там еще и на приналежность в детям body надо проверить. Упс... А спаны-то не те выбраны. 
	 | 
	
		
 PeaceCoder, ну если ты так уверен в необходимости сложных селекторов, давай рассматривать конкретные случаи 
	пока что я вижу, что сложные селекторы могут пригодиться, когда нету возможности изменять код Цитата: 
	
 PeaceCoder, а ты все никак не смиришься?  | 
| Часовой пояс GMT +3, время: 03:21. |