SIFR'ing <LI>только для родителей - PullRequest
0 голосов
/ 10 апреля 2009

Я использую SIFR 3.0 в сочетании с всплывающими меню suckerfish. Я хочу только SIFR li верхнего уровня и не применять эффект к вложенным. Я также использую WordPress, поэтому реструктуризация меню, например, оборачивание родителя в

или другой объект, слишком сложна (я все еще выясняю основы WordPress).

Есть ли способ включить SIFR ON для ul # меню li но ВЫКЛ для ul # меню li li?

Другие вещи, которые я пробовал, но которые не сработали, - это применение класса или идентификатора к родителю

или - это не помогло останови СИФР, он все еще схватил детей.

Большое спасибо за помощь.

Ответы [ 3 ]

1 голос
/ 12 апреля 2009

Я собираюсь предположить, что ваша HTML структура выглядит следующим образом:

<ul id="menu">
  <li>
    <a href="/">My link</a>
    <ul>
      <li>My submenu item</li>
    </ul>
  </li>
</ul>

Когда вы замените ul#menu li, вы замените все содержимое элемента <li>. К сожалению, это также включает подменю. Решение состоит в том, чтобы заменить только ссылку, но учтите, что вы не можете напрямую заменить <a> элементы.

Таким образом:

<ul id="menu">
  <li>
    <span><a href="/">My link</a></span>
    <ul>
      <li>My submenu item</li>
    </ul>
  </li>
</ul>

И заменить ul#menu > li span.

Наконец, возникает вопрос, действительно ли работают меню Suckerfish, если события должны проходить через sIFR. Я подозреваю, что это не так, то есть, вероятно, вам лучше не использовать sIFR.

0 голосов
/ 11 апреля 2009

Если вы загружаете несжатый исходный код sifr, а также используете jQuery или хорошо разбираетесь в javascript, вы, вероятно, можете поместить условное выражение в строку 491 кода sifr вдоль строки

if ($(node).parent().parent().parent().attr('id', 'menu')) {continue;}

Я не очень хорош в jQuery, и я также не уверен, к какому объекту относятся узлы, через которые проходит sifr, но в теории что-то подобное выше должно сделать то, что вы хотите, возможным.

0 голосов
/ 10 апреля 2009

Это можно сделать с помощью дочернего селектора CSS:

ul#menu > li

это выберет только li элементы, которые являются прямыми потомками ul#menu. Это должно работать во всех совместимых со стандартами браузерах и IE7 +.

Для IE6 есть несколько хаков, которые вы можете сделать, чтобы подделать его, хотя я предпочитаю использовать jQuery, чтобы компенсировать селекторы, которые он не поддерживает:

$('ul#menu > li').css({ ... });

, который вы можете разместить в условных комментариях.

...