#jquery
#jquery
Вопрос:
У меня есть ul
<div id="menu">
<ul>
<li><a href="http://apple.com">first</a></li>
<li><a href="http://apple.com">second</a></li>
<li><a href="http://www.apple.com/iphone/">third</a>
<ul>
<li><a href="http://apple.com">third1</a></li>
<li><a href="http://apple.com">third2</a></li>
<li><a href="http://apple.com">third3</a></li>
<li><a href="http://apple.com">third4</a></li>
</ul>
</li><!--fi altres -->
<li><a href="http://apple.com">forth</a></li>
<li><a href="http://www.apple.com/iphone/">fith</a>
<ul>
<li><a href="http://apple.com">fith1</a></li>
<li><a href="http://apple.com">fith2</a></li>
<li><a href="http://apple.com">fifh3</a></li>
</ul>
</li><!--fi nosaltres -->
</ul>
</div><!--menu -->
У меня есть jQuery, который отлично работает при наведении курсора мыши:
$(function(){
$('#menu ul li').hover(function(){
$(this).find('ul').fadeIn()
},function() {
$(this).find('ul').fadeOut()
}
)
})
То же самое не работает с click:
$(function(){
$("#menu ul li").click(function(event) {
event.preventDefault();
$(this).find('ul').fadeIn()
});
})
Когда я нажимаю, чтобы исчезнуть в одном подменю, я должен исчезнуть перед другими подменю. Как?
Комментарии:
1. Вы дважды процитировали один и тот же код в разделе «У меня есть jQuery, который отлично работает при наведении:» и (с другим отступом) в разделе «То же самое не работает с click:» .
2. Это работает здесь jsfiddle.net/cpn6h/1
3. это не завершено, и вы дважды процитировали один и тот же код «оба являются событиями щелчка», пожалуйста, проверьте свой вопрос еще раз
4. пожалуйста, обратите внимание, что mootools — это выбранная библиотека в вашем jsfiddle, А не jquery
5. Это отлично работает, когда вы выбираете jQuery в качестве библиотеки в jsFiddle.
Ответ №1:
я предполагаю, что вы хотите что-то вроде этого.
$("#menu ul li").hover(function(event) {
$(this).find("ul").fadeIn("slow");
},
function(event) {
$(this).find("ul").fadeOut("slow");
});
РЕДАКТИРОВАТЬ Я думаю, что понял:
$(document).ready(function () {
$("#menu > ul > li").click(function(event) {
var $this = $(this);
if ( $this.find("ul").length amp;amp; event.target.href/*.split('/').pop()*/ == $('> a', this).attr('href') ) {
event.preventDefault();
$this.siblings().find("ul").fadeOut("slow");
$this.find("ul").fadeIn("slow");
}
});
});
« amp;amp; event.target.href.split('/').pop() == $('> a', this).attr('href')
» — это чтобы избежать отключения функциональности по умолчанию (откройте ссылку) в подменю.
ПРИМЕЧАНИЕ, если вспомогательная ссылка точно такая же, как ссылка memu, вспомогательная ссылка не будет работать. Вы можете заменить «http:://aaa.com /» по»http://www.aaa.com /» в меню ИЛИ подменю (но не в обоих)
Комментарии:
1. Извините, я не очень хорошо объяснил. У меня нет проблем с наведением. Вопрос в том, как ЩЕЛКНУТЬ и получить подменю
2. я думаю, я понимаю, чего вы хотите. проверьте мой отредактированный ответ и эту скрипку . когда вы нажимаете меню с подменю, оно скрывает другие подменю, если они отображаются, и отображает подменю. Если щелкнуть меню БЕЗ подменю, откроется ссылка.
3. Спасибо за ваш ответ. Ваша скрипка работает нормально. Я понимаю, и я думаю, что это здорово, что вы скрываете другие подменю. Но у меня проблемы с меню без подменю и их ссылками: 1- Это работает в скрипте, но когда я копирую-вставляю в файл, это не так: mig-marketing.com/proves2/2-forum.html Я делал так много раз, и я не нахожу проблему.
4. поскольку ваш скрипт находится в заголовке страницы, он пытается привязать событие щелчка к несуществующему элементу, поскольку #menu создается позже в теле страницы. Попробуйте добавить
$(document).ready(function() { *_CODE_HERE_* });
вокруг кода. редактировать: ну что ж, добавил это в мой ответ;)5. Вы правы. Извините, моя ошибка была глупой. Как вы можете видеть, я только учусь. Теперь он отлично работает на компьютерах, iPad, но не работает на iPhone. Почему?
Ответ №2:
Вы не указали, что хотите использовать jQuery. Поскольку $ не был подключен к jQuery, он вернул значение null. В разделе Выбор фреймворка выберите версию jQuery для загрузки, и ваш код заработает.
Возможно, вы захотите изучить, что roselan предложил для улучшения функциональности, однако.