首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在jQuery中重新排列列表元素

在jQuery中重新排列列表元素
EN

Stack Overflow用户
提问于 2016-09-21 11:48:30
回答 5查看 70关注 0票数 0

我正在制作一个ul li元素函数,就像一个select输入,用户可以从中选择一个颜色框。

下面是代码:

代码语言:javascript
复制
$(document).ready(function() {

  $('.color-picker ul.color-list li.active .text').after('<span class="pull-right glyphicon glyphicon-menu-down"></span>');

  $('.color-picker ul.color-list li').click(function() {


    if ($(this).hasClass('active')) {

      console.log(2);
      $('.color-picker ul.color-list li').show();
    } else {
      console.log(1);

      var color = $(this).find('.box').css('backgroundColor');
      $('.color-picker .color-box').css({
        'background-color': color
      });

      $('.color-picker ul.color-list li.active').removeClass('active');
      $('.color-picker ul.color-list li').hide();

      $(this).addClass('active');
      $('.color-picker ul.color-list li.active').show();
      $('.color-picker ul.color-list li .glyphicon').remove();
      $('.color-picker ul.color-list li.active .text').after('<span class="pull-right glyphicon glyphicon-menu-down"></span>');

    }

  });

});
代码语言:javascript
复制
.color-picker {
  display: flex;
  margin: 20px;
  border: 1px solid #d9d9d9;
  padding: 10px;
  width: 350px;
}
.color-picker .color-box {
  display: inline-block;
  background-color: black;
  height: 50px;
  width: 50px;
}
.color-picker ul.color-list {
  display: inline-block;
  margin: 0;
  position: absolute;
}
.color-picker ul.color-list li {
  list-style: none;
  border: 1px solid #d9d9d9;
  padding: 10px;
  cursor: pointer;
  width: 200px;
  background-color: white;
}
.color-picker ul.color-list li.active {
  display: block;
}
.color-picker ul.color-list li {
  display: none;
}
.color-picker ul.color-list li .box {
  content: "";
  display: inline-block;
  height: 10px;
  width: 30px;
  margin-right: 10px;
}
.color-picker ul.color-list li.red .box {
  background-color: #c71212;
}
.color-picker ul.color-list li.blue .box {
  background-color: #0d89d1;
}
.color-picker ul.color-list li.green .box {
  background-color: #18c771;
}
.color-picker .as-select .select-default {
  border: 1px solid #d9d9d9;
  padding: 10px 20px;
  width: 200px;
  margin-left: 40px;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="color-picker">

  <div class="color-box">
  </div>

  <div class="as-select">
    <ul class="color-list">
      <li class="red active">
        <span class="box"></span>
        <span class="text">Red</span>
      </li>
      <li class="blue">
        <span class="box"></span>
        <span class="text">Blue</span>
      </li>
      <li class="green">
        <span class="box"></span>
        <span class="text">Green</span>
      </li>
    </ul>
  </div>
</div>

jsFiddle

正如您所看到的,活动元素保持在相同的位置。

(选择“蓝色”并再次单击“下拉”)

它们是否可以使所选元素成为列表的第一个子元素?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-09-21 11:59:11

利用Flexbox,您就根本不需要洗牌元素了。CSS可以在视觉上为您“移动”它们。

代码语言:javascript
复制
 .color-picker ul.color-list {
   display: inline-flex;
   margin: 0;
   flex-direction: column;
 }

 .color-picker ul.color-list li {
   list-style: none;
   border: 1px solid #d9d9d9;
   padding: 10px;
   cursor: pointer;
   order:2;
   width: 200px;
 }

 .color-picker ul.color-list li.active {
   display: block;
   order:1;
 }

JSfiddle演示

票数 3
EN

Stack Overflow用户

发布于 2016-09-21 11:57:13

可以使用.prependTo()active li元素添加到颜色选择器元素中。

代码语言:javascript
复制
$(this).prependTo('.color-picker ul.color-list');

演示

票数 1
EN

Stack Overflow用户

发布于 2016-09-21 11:58:15

您应该使用.prepend()函数。

这应该是可行的:

代码语言:javascript
复制
$('.color-list').prepend($(this));

工作JSFiddle

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39615743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档