使用Jquery在相同类型的元素中选择元素
Selecting element within element of same type using Jquery
我有一个嵌套的html结构,如下所示:
<ul class="root">
<li>Foo 1 <label class="bar-class">bar</label>
<ul>
<li>Foo 2 <label class="bar-class">bar</label>
</li>
<li>Foo 3 <label class="bar-class">bar</label>
</li>
</ul>
</li>
</ul>
等等,这是一个站点地图,所以嵌套可以随心所欲地深。
我正试图在li element
悬停时显示和隐藏bar label
。
代码如下:
$('.root li').live({
mouseenter:
function () {
$(this).find('>.bar-class').show('slow');
},
mouseleave:
function () {
$(this).find('>.bar-class').hide('fast');
}
});
问题是,当前项的每个li
父项也显示其bar
,我如何选择它,以便只选择当前项的栏?
我试过变体,但还没有破解。
谢谢。
编辑1:修复html标记。
您可以从回调函数返回false
,以停止事件在DOM树上的进一步传播。
也改为使用mouseover
和mouseout
:
$('.bar-class').hide();
$('.root li').live({
mouseover:
function () { $(this).find('>.bar-class').show('slow'); return false; },
mouseout:
function () { $(this).find('>.bar-class').hide('fast'); return false; }
});
在这一点上,我想鼓励您从使用live
转换为使用on()
,因为live
已被弃用。
在这种情况下,代码变为:
$('.root').on('mouseover mouseout', 'li', function () {
$(this).children('.bar-class').stop(true, true).fadeToggle('slow');
return false;
});
感谢Yoshi的推荐:http://jsfiddle.net/6FzWU/2/
使用e.preventDefault()
,也不推荐使用.live
,使用.on
$(document).on({
mouseenter: function (e) {
e.preventDefault();
$(this).children('.bar-class').show('slow');
},
mouseleave: function (e) {
e.preventDefault();
$(this).children('.bar-class').hide('fast');
}
}, '.root li');
相关文章:
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- 使用元素选择器向Object添加函数
- j查询未来元素选择器
- 是否存在jQuery元素选择库的最小化版本
- Jquery动态元素选择器
- 为Select元素选择ONCHANGE
- 如何通过元素选择器获取tinyMCE编辑器实例
- 引导模式元素选择
- 下拉元素选择和 JS 调用不起作用
- 如何在 Edge Animate 中使用类元素选择器绑定 ElementAction
- 停止 Edge 浏览器尝试跨元素选择单词
- jQuery在以下选择器中引用初始元素选择器
- 编写一个类似jQuery的JS元素选择器
- 并行元素选择器
- 带有元素选择器的jQuery get()函数
- 如何设置为元素选择的属性并从其余部分移除属性
- Jquery Html元素选择器
- Jquery元素选择
- 如何使用Javascript防止HTML元素选择选项中的冲突
- 在IE上组合了活动状态伪类和相邻元素选择器