javascript - ul 中的交换列表和事件元素位置保持不变

标签 javascript jquery html css angularjs

我是脚本新手。 有人可以帮我交换 ul 中的 li 工作场景是: 1.当用户点击 anchor 标签时,它应该出现在中间意味着事件位置(事件元素应始终位于中心位置)。 2. 列表可以不按顺序排列。

var swapElements = function(siblings, subjectIndex, objectIndex) {
  // Get subject jQuery
  var subject = $(siblings.get(subjectIndex));
  // Get object element
  var object = siblings.get(objectIndex);
  // Insert subject after object
  subject.insertAfter(object);
}
$(function() {
  swapElements($('li'), 0, 1);
});
ul li {
  float: left;
  display: inline-block;
  list-style: none;
}

ul li a {
  color: #000;
  text-decoration: none;
  padding: 15px;
  display: block;
}

ul li.active a {
  color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ul>
  <li><a class="nav-item" href="#"><span>Quality</span></a></li>
  <li><a class="nav-item" href="#"><span>Safety</span></a></li>
  <li class="active"><a class="nav-item" href="#"><span>People</span></a></li>
  <li><a class="nav-item" href="#"><span>Cost</span></a></li>
  <li><a class="nav-item" href="#"><span>Delivery</span></a></li>
</ul>

我曾尝试更改代码但没有成功。任何人都可以帮助我解决我的问题。 提前致谢..

最佳答案

请考虑以下代码,并给出注释以供解释。有不明白的地方欢迎留言。

	$(document).ready(function() {
		function change() {

			// 1. remove active class from currently active component
			$('.active').removeClass('active');

			// 2. get html inside of the list element
			var htm = $(this).html();

			// 3. remove the list element
			$(this).remove();

			// 4. add a new list element after the 2nd child or (n /2)th child
			$('li:nth-child(2)').after('<li class="active">' + htm + '</li>');

			// 5. bind the change method to clicking of this new element
			$('li:nth-child(3)').click(change);
		}

		// when a list element is clicked, call the change function
		$('li').click(change);

	});
    ul li {
      float: left;
      display: inline-block;
      list-style: none;
    }

    ul li a {
      color: #000;
      text-decoration: none;
      padding: 15px;
      display: block;
    }

    ul li.active a {
      color: red;
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

    <ul>
      <li><a class="nav-item" href="#"><span>Quality</span></a></li>
      <li><a class="nav-item" href="#"><span>Safety</span></a></li>
      <li class="active"><a class="nav-item" href="#"><span>People</span></a></li>
      <li><a class="nav-item" href="#"><span>Cost</span></a></li>
      <li><a class="nav-item" href="#"><span>Delivery</span></a></li>
</ul>

关于javascript - ul 中的交换列表和事件元素位置保持不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42483728/

相关文章:

javascript - 如何在模式启动后更改模式中的元素?

jquery - TypeError : $. fn.dataTable.moment 不是函数

javascript - 为什么 JQuery 自动完成结果不显示在浏览器中?

javascript - 如何获取方括号中的内容

php - 使用 PHP 将数组插入 MySQL

javascript - 读取单选按钮的值时,值未定义

javascript - 除了 onunload 事件之外,检测用户是否正在关闭 IE 浏览器,因为它是在用户刷新等时触发的

javascript - 使用输入过滤字段并在angularJS中下拉

javascript - jQuery scrollTop 不适用于 CSS 视差?

javascript - 在视口(viewport)上检测