使用 Jquery 设置锚标记子节点的属性
Setting attribute for anchor tag child node with Jquery
我正在尝试访问特定锚标记并使用 jquery 为其指定特定属性。到目前为止,我已经能够为所有锚标签赋予该属性。如果我只想将 'aria-label' 属性赋予第二个或第三个 li 锚标记,我假设我会在查询代码中的某处传递 [1] 或 [2] 的参数,但没有成功.
<!DOCTYPE html>
<html lang="en">
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<title>Jquery Practice</title>
</head>
<body>
<h1>Accessing specific elements Jquery</h1><hr>
<div id="parent-div">
<ul id="child-div">
<li id="grandchild-1">
<a href="https://www.google.com/">
<i class="fa fa-chain"></i>
</a>
</li>
<li id="grandchild-2">
<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript">
<i class="fa fa-link"></i>
</a>
</li>
<li id="grandchild-3">
<a href="https://www.w3schools.com/js/default.asp">
<i class="fa fa-question"></i>
</a>
</li>
<li id="grandchild-4">
<a href="https://jquery.com/">
<i class="fa fa-cog"></i>
</a>
</li>
</ul>
</div>
</body>
<script>
$(document).ready(function(){
$('#parent-div').parent().find('li>a').attr('aria-label','Test');
});
</script>
</html>
为什么不直接在 li 中直接定位 a?如果您检查“a”元素 - 您可以看到已应用 aria 属性。
编辑 - 添加了一个字符串数组,并根据评论中的讨论更改了循环以对每个 li > a 应用不同的标签。每个索引标签都显示在控制台中以演示结果,检查 a 元素将显示单独分配的 aria-label。
$(document).ready(function(){
const labels=["first", "second", "third", "fourth"];
$('#parent-div li > a').each(function(index){
const ariaLabel = labels[index] + ' label';
$(this).attr('aria-label',ariaLabel);
console.log(index, ariaLabel)
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<div id="parent-div">
<ul id="child-div">
<li id="grandchild-1">
<a href="https://www.google.com/">
<i class="fa fa-chain"></i>
</a>
</li>
<li id="grandchild-2">
<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript">
<i class="fa fa-link"></i>
</a>
</li>
<li id="grandchild-3">
<a href="https://www.w3schools.com/js/default.asp">
<i class="fa fa-question"></i>
</a>
</li>
<li id="grandchild-4">
<a href="https://jquery.com/">
<i class="fa fa-cog"></i>
</a>
</li>
</ul>
</div>
我正在尝试访问特定锚标记并使用 jquery 为其指定特定属性。到目前为止,我已经能够为所有锚标签赋予该属性。如果我只想将 'aria-label' 属性赋予第二个或第三个 li 锚标记,我假设我会在查询代码中的某处传递 [1] 或 [2] 的参数,但没有成功.
<!DOCTYPE html>
<html lang="en">
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<title>Jquery Practice</title>
</head>
<body>
<h1>Accessing specific elements Jquery</h1><hr>
<div id="parent-div">
<ul id="child-div">
<li id="grandchild-1">
<a href="https://www.google.com/">
<i class="fa fa-chain"></i>
</a>
</li>
<li id="grandchild-2">
<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript">
<i class="fa fa-link"></i>
</a>
</li>
<li id="grandchild-3">
<a href="https://www.w3schools.com/js/default.asp">
<i class="fa fa-question"></i>
</a>
</li>
<li id="grandchild-4">
<a href="https://jquery.com/">
<i class="fa fa-cog"></i>
</a>
</li>
</ul>
</div>
</body>
<script>
$(document).ready(function(){
$('#parent-div').parent().find('li>a').attr('aria-label','Test');
});
</script>
</html>
为什么不直接在 li 中直接定位 a?如果您检查“a”元素 - 您可以看到已应用 aria 属性。
编辑 - 添加了一个字符串数组,并根据评论中的讨论更改了循环以对每个 li > a 应用不同的标签。每个索引标签都显示在控制台中以演示结果,检查 a 元素将显示单独分配的 aria-label。
$(document).ready(function(){
const labels=["first", "second", "third", "fourth"];
$('#parent-div li > a').each(function(index){
const ariaLabel = labels[index] + ' label';
$(this).attr('aria-label',ariaLabel);
console.log(index, ariaLabel)
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<div id="parent-div">
<ul id="child-div">
<li id="grandchild-1">
<a href="https://www.google.com/">
<i class="fa fa-chain"></i>
</a>
</li>
<li id="grandchild-2">
<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript">
<i class="fa fa-link"></i>
</a>
</li>
<li id="grandchild-3">
<a href="https://www.w3schools.com/js/default.asp">
<i class="fa fa-question"></i>
</a>
</li>
<li id="grandchild-4">
<a href="https://jquery.com/">
<i class="fa fa-cog"></i>
</a>
</li>
</ul>
</div>