遍历列表,从列表项文本添加列表项 ID
Iterate through list, add list item id from list item text
我希望找到一个简单的 jQuery 解决方案来遍历列表的子选择器,在本例中,ul > li span span 子选择器,找到文本,将文本复制为列表项 ID , 同时删除空格并用下划线替换(例如,在下面的示例中,HR Area 将变为 HR_Area 然后作为列表项 ID 添加为 li id="HR_Area") .
<ul id="menu">
<li><a href="/"><span class="additional-background"><span class="menu-item">Staff</span></span></a>
<ul>
<li><a href="directory.asp">Directory</a></li>
</ul>
</li>
<li><a href="/"><span class="additional-background"><span class="menu-item">HR Area</span></span></a>
<ul>
<li><a href="vacation.asp">Manage Vacation Time</a></li>
</ul>
</li>
</ul>
提前致谢。
只需遍历直接子节点 an li。
然后访问跨度并将空格替换为下划线并相应地设置id。
// Iterate over the immediate li elements for the ul
$('#menu > li').each(function(elem) {
var $this = $(this);
// Access the span element
var $span = $('.menu-item', $this),
spanText = $span.text(),
// Replace space with underscore
replacedText = spanText.split(' ').join('_');
// Set the id of for the li element
$this.attr('id', replacedText);
});
$('#menu > li').each(function(elem) {
console.log($(this).attr('id'));
});
这将 select 仅在 #menu 中紧邻的 li。
我希望这是你所期望的。
$(document).ready(function() {
$("#menu>li .menu-item").each(function() {
$(this).closest("li").attr("id", $(this).text().split(' ').join('_'));
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul id="menu">
<li>
<a href="/">
<span class="additional-background">
<span class="menu-item">Staff</span>
</span>
</a>
<ul>
<li><a href="directory.asp">Directory</a>
</li>
</ul>
</li>
<li>
<a href="/">
<span class="additional-background">
<span class="menu-item">HR Area</span>
</span>
</a>
<ul>
<li><a href="vacation.asp">Manage Vacation Time</a>
</li>
</ul>
</li>
</ul>
试试这个:-
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
$(document).ready(function(){
$("#menu").find("li").each(function(){
$(this).find("span").each(function(){
var txt = $(this).html();
txt = txt.replace(" ","_");
$(this).closest("li").attr("ID",txt);
});
});
});
</script>
</head>
<body>
<ul id="menu">
<li><a href="/"><span class="additional-background"><span class="menu-item">Staff</span></span></a>
<ul>
<li><a href="directory.asp">Directory</a></li>
</ul>
</li>
<li><a href="/"><span class="additional-background"><span class="menu-item">HR Area</span></span></a>
<ul>
<li><a href="vacation.asp">Manage Vacation Time</a></li>
</ul>
</li>
</ul>
</body>
</html>
我希望找到一个简单的 jQuery 解决方案来遍历列表的子选择器,在本例中,ul > li span span 子选择器,找到文本,将文本复制为列表项 ID , 同时删除空格并用下划线替换(例如,在下面的示例中,HR Area 将变为 HR_Area 然后作为列表项 ID 添加为 li id="HR_Area") .
<ul id="menu">
<li><a href="/"><span class="additional-background"><span class="menu-item">Staff</span></span></a>
<ul>
<li><a href="directory.asp">Directory</a></li>
</ul>
</li>
<li><a href="/"><span class="additional-background"><span class="menu-item">HR Area</span></span></a>
<ul>
<li><a href="vacation.asp">Manage Vacation Time</a></li>
</ul>
</li>
</ul>
提前致谢。
只需遍历直接子节点 an li。 然后访问跨度并将空格替换为下划线并相应地设置id。
// Iterate over the immediate li elements for the ul
$('#menu > li').each(function(elem) {
var $this = $(this);
// Access the span element
var $span = $('.menu-item', $this),
spanText = $span.text(),
// Replace space with underscore
replacedText = spanText.split(' ').join('_');
// Set the id of for the li element
$this.attr('id', replacedText);
});
$('#menu > li').each(function(elem) {
console.log($(this).attr('id'));
});
这将 select 仅在 #menu 中紧邻的 li。 我希望这是你所期望的。
$(document).ready(function() {
$("#menu>li .menu-item").each(function() {
$(this).closest("li").attr("id", $(this).text().split(' ').join('_'));
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul id="menu">
<li>
<a href="/">
<span class="additional-background">
<span class="menu-item">Staff</span>
</span>
</a>
<ul>
<li><a href="directory.asp">Directory</a>
</li>
</ul>
</li>
<li>
<a href="/">
<span class="additional-background">
<span class="menu-item">HR Area</span>
</span>
</a>
<ul>
<li><a href="vacation.asp">Manage Vacation Time</a>
</li>
</ul>
</li>
</ul>
试试这个:-
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
$(document).ready(function(){
$("#menu").find("li").each(function(){
$(this).find("span").each(function(){
var txt = $(this).html();
txt = txt.replace(" ","_");
$(this).closest("li").attr("ID",txt);
});
});
});
</script>
</head>
<body>
<ul id="menu">
<li><a href="/"><span class="additional-background"><span class="menu-item">Staff</span></span></a>
<ul>
<li><a href="directory.asp">Directory</a></li>
</ul>
</li>
<li><a href="/"><span class="additional-background"><span class="menu-item">HR Area</span></span></a>
<ul>
<li><a href="vacation.asp">Manage Vacation Time</a></li>
</ul>
</li>
</ul>
</body>
</html>