将鼠标悬停在一个元素上,打开另一个元素
Roll over one element, open another
>我有一个菜单结构,其中子菜单位于页面其他地方的单独div中。父元素和子菜单都是编号的,我正在尝试找到一种方法来滚动父元素并打开其相应的子菜单,而不必为每个元素使用单独的选择器。父元素如下所示:
<li id="primary-nav-parent-0"></li>
<li id="primary-nav-parent-1"></li>
<li id="primary-nav-parent-2"></li>
<li id="primary-nav-parent-3"></li>
<li id="primary-nav-parent-4"></li>
<li id="primary-nav-parent-5"></li>
子菜单如下所示:
<div id="primary-nav-sub-menu-0" class="primary-nav-sub-menu"></div>
<div id="primary-nav-sub-menu-1" class="primary-nav-sub-menu"></div>
<div id="primary-nav-sub-menu-2" class="primary-nav-sub-menu"></div>
<div id="primary-nav-sub-menu-3" class="primary-nav-sub-menu"></div>
<div id="primary-nav-sub-menu-4" class="primary-nav-sub-menu"></div>
<div id="primary-nav-sub-menu-5" class="primary-nav-sub-menu"></div>
我似乎不知道如何做到这一点。任何帮助将不胜感激。谢谢!
一种方法是从 id 中解析出数字。
$('[id*="primary-nav-parent"]').on('mouseover mouseleave',function(){
$('[id$="sub-menu-' + this.id.match(/'d+/) + '"]').toggle();
});
吉斯菲德尔
一种方法是
var $subs = $('.primary-nav-sub-menu').hide();
$('li[id^=primary-nav-parent-]').click(function(){
var $target = $('#primary-nav-sub-menu-' + $(this).index());
//or var $target = $('#primary-nav-sub-menu-' + this.id.match(/('d+)$/)[1]); if you don't want to depend on the index
$subs.not($target).stop(true, true).slideUp();
$target.stop(true, true).slideDown()
})
演示:小提琴
但更好的解决方案将是
<ul>
<li id="primary-nav-parent-0" class="primary-nav-parent" data-target="#primary-nav-sub-menu-0">0</li>
<li id="primary-nav-parent-1" class="primary-nav-parent" data-target="#primary-nav-sub-menu-1">1</li>
<li id="primary-nav-parent-2" class="primary-nav-parent" data-target="#primary-nav-sub-menu-2">2</li>
<li id="primary-nav-parent-3" class="primary-nav-parent" data-target="#primary-nav-sub-menu-3">3</li>
<li id="primary-nav-parent-4" class="primary-nav-parent" data-target="#primary-nav-sub-menu-4">4</li>
<li id="primary-nav-parent-5" class="primary-nav-parent" data-target="#primary-nav-sub-menu-5">5</li>
</ul>
然后
var $subs = $('.primary-nav-sub-menu').hide();
$('.primary-nav-parent').click(function(){
var $target = $($(this).data('target'));
$subs.not($target).stop(true, true).slideUp();
$target.stop(true, true).slideDown()
})
演示:小提琴
相关文章:
- 使用clickToggle并在单击另一个元素时关闭元素
- 按我自己的类克隆另一个元素的内容和顺序
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- 使用svg和javascript将一个类的元素动画化为另一个类
- 将html元素插入到文本字符串中,以匹配另一个html字符串
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- jquery从另一个元素中移除移除
- DIV怎么能像Javascript中的另一个元素一样工作呢
- 使用数据属性将HTML数据复制到另一个元素
- 如何从另一个带下划线的数组中筛选带元素的数组
- 将鼠标悬停在Angular JS中的一个元素上,并将Class添加到另一个元素中
- 在类JavaScript选择的另一个元素中选择一个标记元素
- 只要存在,就用另一个元素替换一个元素
- 检查一个元素是否有一个类与另一个类总是返回true
- 初学者反应查询(如何删除一个元素并附加另一个元素)
- 将jquery ui窗口的父元素设置为另一个元素
- 如何激活下拉菜单:在一个元素上单击768px宽度下方,在另一个元素上将鼠标悬停在768px上方
- Pixijs将元素附加到另一个元素
- 将SVG元素拖动到另一个SVG元素上
- JavaScript:将输入范围行为链接到另一个元素