проблема и эффективность селекторов jquery

#javascript #jquery

#javascript #jquery

Вопрос:

Привет, у меня проблема (не совсем проблема, я ее решил, но это, по крайней мере, очень интересно) с различным поведением селекторов jquery в IE (7-8), мобильной Opera и других браузерах.. Вот мой пример

 <div id="galleryEl"><link href="http://designclub.cz/plugins/content/plugin_jw_sig/sig.css" rel="stylesheet" type="text/css">
                <style type="text/css">.sig_cont {width:30px;height:20px;}</style>
                <script type="text/javascript" src="http://designclub.cz/plugins/content/plugin_jw_sig/mootools.js"></script>
                <script type="text/javascript" src="http://designclub.cz/plugins/content/plugin_jw_sig/slimbox.js"></script>
                <div class="sig"><div class="sig_cont"><div class="sig_thumb"><a href="http://designclub.cz/images/stories/hp/hp-falper.jpg" rel="lightbox[sig0]" title="amp;<bamp;>hp-falper.jpgamp;</bamp;>" alt="hp-falper.jpg" target="_blank"><img src="http://designclub.cz/plugins/content/plugin_jw_sig/showthumb.php?img=hp/hp-falper.jpgamp;amp;width=0amp;amp;height=0amp;amp;quality=0">
  

Извините за форматирование 🙂

Проблема заключается в следующем..Когда я использую этот селектор jQuery("#galleryEl .sig_thumb a").eq(index); (индекс на самом деле является целым числом) в основных современных браузерах, он просто работает.. но в IE (7-9) (6 я не тестировал) это не так..Когда я заглядываю в консоль разработчика IE, похоже, что результирующий объект является каким-то простым объектом dom???Я действительно не уверен, не настолько опытен в js, но это так кажется 🙂 Когда я меняю jQuery(".sig_thumb a").eq(index); , он выбирает правильный элемент dom..Разметка такая странная, потому что это плагин joomla, я использую его для динамического создания фоновых слайд-шоу в соответствии со структурой папок..Итак, кто-нибудь знает, откуда происходит это странное поведение? И второй вопрос..Я действительно хочу сделать это эффективным, так какой тип селектора является лучшим в этом случае?Я знаю, что при выборе по id jQuery использует собственный метод js, то же самое в случае tagName и так далее, Но я действительно не уверен, как насчет комбинаций, если это селекторы (лучше ли использовать id-tag-class-someOtherStuff или id-class-someOtherStuff, id-someOtherStuff {в случае, если между id и результирующим объектом много других элементов DOM }) Спасибо за вашу помощь

Ответ №1:

Убедитесь, что существует только 1 элемент с идентификатором «galleryEl» . Если их несколько, выбор первой или последней зависит от версии IE и режима совместимости.

пример для тестирования:

 <script  type="text/javascript">
jQuery(
        function($)
        {
          alert('Found:' jQuery("#someID .someclass").eq(1).text());
        }
);
</script>
<div id="someID"><span class="someclass">1</span></div>
<div id="someID"><span class="someclass">2</span><span class="someclass">3</span></div>
  

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

1. спасибо, в этом суть.. Я не знаю, почему это возможно, может быть, что-то странное в моей конфигурации Joomla?? Но один и тот же идентификатор встречается там действительно два раза ..:) И первый элемент пуст, следовательно, обычный объект DOM:D