JavaScript 根据索引设置 URL
JavaScript Set URL according to index
请帮我优化这个脚本:
$('#dynamic-menu li:nth-child(1) a').attr('href','#' + $('.cmsPanel:nth-child(2)').attr('id'));
$('#dynamic-menu li:nth-child(2) a').attr('href','#' + $('.cmsPanel:nth-child(3)').attr('id'));
$('#dynamic-menu li:nth-child(3) a').attr('href','#' + $('.cmsPanel:nth-child(4)').attr('id'));
$('#dynamic-menu li:nth-child(4) a').attr('href','#' + $('.cmsPanel:nth-child(5)').attr('id'));
$('#dynamic-menu li:nth-child(5) a').attr('href','#' + $('.cmsPanel:nth-child(6)').attr('id'));
$('#dynamic-menu li:nth-child(6) a').attr('href','#' + $('.cmsPanel:nth-child(7)').attr('id'));
网页输入:
<ul>
<li><a href="/randomUrl"></a></li>
<li><a href="/yyy"></a></li>
<li><a href="/zzz"></a></li>
</ul>
<div class="cmsTabBox">
<ul>
<li>
</li>
<li>
</li>
<li>
</li>
</ul>
<div class="cmsPanel" id="randomUrl"></div>
<div class="cmsPanel" id="another-random-url"></div>
<div class="cmsPanel" id="random"></div>
</div>
上面的一个有效,但是我如何自动复制id
,减少索引并将其复制到href属性?
需要 HTML 输出:
<ul>
<li><a href="#randomUrl"></a></li>
<li><a href="#another-random-url"></a></li>
<li><a href="#random"></a></li>
</ul>
<div class="cmsTabBox">
<ul>
<li>
</li>
<li>
</li>
<li>
</li>
</ul>
<div class="cmsPanel" id="randomUrl"></div>
<div class="cmsPanel" id="another-random-url"></div>
<div class="cmsPanel" id="random"></div>
</div>
提前谢谢你。
你应该
这样做.each()
方式:
$('#dynamic-menu li').each(function (i) {
$(this).find("a").attr('href','#' + $('.cmsPanel:nth-child(' + (i+1) + ')').attr('id'));
});
片段
$(function () {
$('#dynamic-menu li').each(function (i) {
$(this).find("a").attr('href','#' + i);
});
});
<script src="https://code.jquery.com/jquery-2.2.4.js"></script>
<ul id="dynamic-menu">
<li><a href="">Item 1</a></li>
<li><a href="">Item 2</a></li>
<li><a href="">Item 3</a></li>
<li><a href="">Item 4</a></li>
<li><a href="">Item 5</a></li>
</ul>
使用 each
:
编辑前
$('#dynamic-menu li').each(function (index) {
$(this).find("a").attr('href','#' + $('.cmsPanel:nth-child('+ (index+1) +')').attr('id'));
});
编辑后
$('#dynamic-menu li').each(function (index) {
$(this).find("a").attr('href','#' + $('.cmsTabBox div:nth-of-type('+ (index+1) +')').attr('id'));
});
这样,您可以保留链接逻辑,而无需为每个链接重复它,也无需使用增量循环 ( for
(。
下一个代码是因为它将被渲染修复 html 结构/JavaScript 中的一些错误:
$(function () {
$('#dynamic-menu li').each(function (index) {
$(this).find("a").attr('href','#' + $('.cmsTabBox div:nth-of-type('+ (index+1) +')').attr('id'));
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<ul id="dynamic-menu">
<li><a href="/xxx">randomUrl</a></li>
<li><a href="/yyy">another-random-url</a></li>
<li><a href="/zzz">random</a></li>
</ul>
<div class="cmsTabBox">
<ul></ul>
<div id="randomUrl"></div>
<div id="another-random-url"></div>
<div id="random"></div>
</div>
缺少什么?
- 您忘记在
ul
元素上设置id="dynamic-menu"
。 -
cmsPanel
在 JavaScript 中更改为cmsTabBox
以匹配 HTML。 - 我添加了
div:nth-of-type
以获得cmsPanel
的正确孩子,因为您想获得儿童 ID 而不是cmsPanel
ID。 - 我添加了
nth-of-type
因为显然您可以在cmsPanel
div 中拥有另一个ul
li
列表元素。
相关文章:
- 如何使用 Ruby 在 Javascript (js.erb) 中设置 url
- 这个关键字位于$.ajax()中,用于调用其他函数来设置url
- 设置 URL 以在 Django 模板中加载 iframe
- jQuery ticker - 如何为 #ticker 标题设置 URL
- 在Aurelia中设置URL而不刷新整个模板
- 如何使用jquery ajax在离线网站中设置url
- 根据复选框检查并设置url变量
- 在窗口中预先设置URL.打开函数jQuery
- 在.htaccess中设置URL重写规则后javascript文件和css文件的路径
- 使用javascript设置URL中隐藏参数的值
- 在JavaScript中为jsoup设置url
- 正在设置URL中的请求标头
- 正在根据滚动到的部分设置url哈希
- JavaScript 根据索引设置 URL
- IE不能设置url,而Chrome可以
- 如何使用Vue- router在Vue中设置URL查询参数
- jqGrid设置URL为自定义按钮
- 模型.保存设置url并在成功时进行回调
- PHP全局设置URL并在每个页面中调用它
- 如何通过PHP设置URL