javascript - 添加具有不同查询的列表项

标签 javascript jquery

我有一个由 CMS 生成的导航列表。 cms 不允许在 nav 组件中插入额外的 html,除非向每个元素添加一个类。我想要的最终产品是通过 font Awesome 在每个导航项旁边附加一个图标。每个导航项目都有自己独特的图标和独特的类别。我已经能够使用 jquery 单独附加每个,但是有没有更干净的方法来实现这一点。

.html

<ul class="nav navbar-nav">
    <li class="homeNav"><a href="#">Home</a></li>
    <li class="aboutNav"><a href="#about">About</a></li>
    <li class="objNav"><a href="#objective">Objective</a></li>
    ...
    ...
    ...
</ul>

.jquery 我正在使用

$('.homeNav').children().empty().append('<i class="fa fa-home"></i> Home');

我应该为每个项目进行 jquery 调用吗?

最佳答案

您可以创建一个映射 className 的对象到图标类,例如:

var icons = {
  'homeNav': 'fa-home',
  'aboutNav': 'fa-about',
  'objNav' : 'fa-objective'
};

然后设置每个navbar的html <li> :

$('.nav.navbar-nav li').html(function(i, text) {
  return '<i class="fa ' + icons[this.className] + '">' + $(this).text();
});

您可能需要在其中添加一些检查以确保 icons[this.className]存在,但这应该为您指明正确的方向。

Here's a fiddle

编辑

如果您需要保留 anchor :

$('.nav.navbar-nav li').html(function(i, text) {
  return $('a', this).prepend('<i class="fa ' + icons[this.className] + '">');
});

关于javascript - 添加具有不同查询的列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21039252/

相关文章:

javascript - 如何在 jQuery 中添加两个或多个变量(PHP 中 .= 运算符的镜像)

javascript - 为什么 "sticky"javascript 不能在 Firefox/IE 中运行?

php - 如何将 1300 条 CSV 记录输入到 Web 表单中?

javascript - 为什么 JQuery 在尝试从输入类型文本中捕获值时返回 Undefined?

javascript - 嵌套循环的问题

php - 带警报的 AJAX 提交功能不起作用

jquery - CSS3 过渡可能存在的 Webkit 错误

javascript - jQuery Ajax 回调无法识别 $(this) 对象

javascript - Hammer.js on tap 停止滚动父 div

javascript - d3 : svg image in zoom circle packing bis