向 DOM 元素添加额外的标识符
adding extra identifiers to dom elements
我有一堆列表格式的菜单项,如下所示
<ul class="menu unselectable">
<li class="group">
Group Title
<ul>
<li class="groupItem i0">item 0</li>
<li class="groupItem i1 over">item 1</li>
</ul>
</li>
<li class="group">
Another Group Title
<ul>
<li class="groupItem i2">item 2</li>
<li class="groupItem i1">item 1 (if I hover here, the others should too</li>
</ul>
</li>
</ul>
这个想法是,如果我将鼠标悬停在一个具有类 i1
的项目上,那么所有i1
项目的行为都应该相同。因此,当我像这样将鼠标悬停在i1
中的任何一个项目上时,我想为所有项目添加一个类over
。
$(".groupItem").hover(
function () {
$(this).addClass("over");
},
function () {
$(this).removeClass("over");
}
);
问题是我想不出一种方法来识别除了$(this)
之外刚刚悬停在哪个项目上。为了解决这个问题,我想添加i1
作为项目的id
,但不同的 dom 节点不应该具有相同的id
。我的下一个想法是将属性value
添加到li
项中,但无济于事(当我对$(this).val()
进行快速测试时,无论节点中实际存储的value
如何,都会一直返回 0。
有什么方法可以添加一个标识符,这样我就可以说$(this).<someIdentifier>
,并使用该标识符定位所有 dom 节点?
您可以添加一个属性groupID="{id}"
然后调用$(this).attr('groupID')
Element.prototype.secondId = '';
和比
document.getElementById('id5').secondId = 13;
因此,您只需在任何元素上设置一个新属性,您可以根据需要使用它,但只是在javascript中而不是html中。
我不建议向元素添加虚假属性,即使用户的浏览器不支持数据属性,这也将起作用:
$(".groupItem").hover(
function () {
var className = this.className.split(' ')[1];
$('.' + className).addClass("over");
},
function () {
var className = this.className.split(' ')[1];
$('.' + className).removeClass("over");
}
);
注意:要求始终按照上面指定的方式组织类。更安全的方法是:
var className = $.trim(this.className.replace('groupItem',''));
$(this(.filter('#selector'(
请尝试使用以下代码一次:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>
<style>
.menu{ display:inline;}
.menu li{ display:inline; float: left;width: 100px;}
.menu li ul{display:none;}
</style>
<script type="text/javascript">
$(document).ready(function(){
$(".group").hover(
function () {
$(this).find("ul").show();
},
function () {
$(this).find("ul").hide();
}
);
});
</script>
</head>
<body>
<ul class="menu">
<li class="group">
Group Title
<ul>
<li>GT 1</li>
<li>GT 2</li>
</ul>
</li>
<li class="group">
Trochlear Nerve
<ul>
<li>TN 1</li>
<li>TN 2</li>
</ul>
</li>
</ul>
</body>
</html>
相关文章:
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在映射数组中添加换行符
- 正在将数据主题添加到所有项目
- ZeroClipboard-在复制之前添加到值
- 我可以在json对象中添加一个函数吗
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何添加浮动和非浮动,其他
- 添加文字和评论功能更新Div
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 在函数中添加数组元素的数值
- 如何将歌曲添加到jPlayer
- EDIT:将标识符添加到动态生成的行中
- 添加到jQuery中的密钥标识符数组
- 向 DOM 元素添加额外的标识符
- 将数字标识符中的字符实体添加到输入值中
- 在向ngRoute添加控制器时出现意外标识符
- 如何在ajax中添加post标识符
- 如何在 JQuery AJAX 文件上传中添加唯一标识符