Я искал решение этой проблемы, но оно настолько шаткое, что я сомневаюсь, что многие его обдумали. Веб-приложение, которое я недавно унаследовал как веб-администратор, работает на Drupal (версия 6). К сожалению, я не могу изменить установку Drupal или создать собственную тему до мая из-за других обязательств, которые должны выполняться в первую очередь.
Прежде всего, я понимаю и от всего сердца согласен с тем, что существуют более эффективные (и элегантные) способы решения этой проблемы, но на данный момент это то, что клиент хочет и ему удобно внедрять.
В любом случае, старый администратор использовал Drupal для разработки навигации по сайту. Код, который Drupal выкладывает на HTML-странице:
<ul class="menu">
<li class="expanded first"><a href="/" title="">Housing</a>
<ul class="menu">
<li class="leaf first"><a href="/housing_roster" title="" class="active">Housing Roster</a></li>
<li class="leaf"><a href="/my_floor" title="">My Floor</a></li>
<li class="leaf"><a href="/photoviewer" title="">Photo Viewer</a></li>
<li class="leaf last"><a href="/maintenance_viewer" title="">Building Maintenance</a></li>
</ul>
</li>
<li class="expanded"><a href="/" title="">Reports</a>
<ul class="menu">
<li class="leaf first"><a href="/node/add/fr" title="">Build Floor Report</a></li>
<li class="leaf"><a href="/node/add/ir" title="">Submit Incident Report</a></li>
<li class="leaf last"><a href="/lockout" title="">Submit Lockout</a></li>
</ul>
</li>
<li class="expanded"><a href="/" title="">Office</a>
<ul class="menu">
<li class="leaf first"><a href="/node/add/pack-in" title="">Check In Package</a></li>
<li class="leaf"><a href="/node/add/pack-out" title="">Check Out Building Package</a></li>
<li class="leaf"><a href="/node/add/package-out-all-blgds" title="">Check Out Campus Package</a></li>
<li class="leaf last"><a href="/node/add/equipment-out" title="">Check Equipment Out</a></li>
</ul>
</li>
<li class="expanded"><a href="/" title="">Staff</a>
<ul class="menu">
<li class="leaf first"><a href="/node/add/preprogram" title="">Pre Programs</a></li>
<li class="leaf"><a href="/node/add/program" title="">Post Program</a></li>
<li class="leaf"><a href="/programs/semester" title="">Programming Database</a></li>
<li class="leaf last"><a href="/downloads" title="">Staff Downloads</a></li>
</ul>
</li>
<li class="leaf"><a href="/users/twinchester">My account</a></li>
<li class="leaf last"><a href="/logout">Log out</a></li>
Самая большая проблема, которую я имею в связи с этим выводом, состоит в том, что есть элемент ul с атрибутом класса «menu», вложенный в другой элемент ul с атрибутом class «menu».
Цель написанной мной функции JavaScript -
- Разрешить jQuery раскрывать и сворачивать дочерний элемент ul при каждом щелчке по соответствующему элементу li с классом "extended"
- Измените атрибут href ТОЛЬКО элементов li с классом "extended" на "javascript: void (null)", чтобы они не перенаправляли пользователя на какую-либо страницу
Вот функция JavaScript, которую я до сих пор выполняю:
<script type="text/javascript">
$(function() {
//Hide the nested lists
$('ul.menu li.expanded ul.menu').hide();
//Change the destination of the header links
$('ul.menu li.expanded a').attr("href", "javascript:void(null)");
//Toggle the display of the nested lists
$('ul.menu li.expanded a').click(function() {
$(this).next().slideToggle('normal');
});
});
</script>
Это работает просто отлично, за исключением того, что он изменяет атрибут href вложенных элементов li на "javascript: void (null)". Есть ли способ, которым я могу изменить свою функцию JavaScript, чтобы убедиться, что она применяет новый атрибут href ТОЛЬКО к элементам li с классом "extended", а не к элементам li с классом "leaf"?
На данный момент меня действительно интересует только изменение моей функции JavaScript. Как я уже сказал, я знаю и согласен с тем, что существуют лучшие методы (например, изменение html-вывода темы Drupal для начала), но если я смогу быстро исправить это как временное решение, пока я перестраиваю все приложение, то было бы здорово!
Пожалуйста, дайте мне знать, если у вас есть предложения !!!
СПАСИБО !!!