【问题标题】:How do you swap first list element with another li element on click单击时如何将第一个列表元素与另一个 li 元素交换
【发布时间】:2013-06-16 20:52:47
【问题描述】:

我正在尝试创建一个菜单,每次单击链接时,它都会将父“li”与第一个链接交换,谁能告诉我该怎么做?

这是初始菜单:

    <ul class="top-menu">
    <li class="first-element"><a href="/">First</a><li>
    <li class="second-element"><a href="/">Second</a><li>
    <li class="third-element"><a href="/">Third</a><li>
    <li class="fourth-element"><a href="/">Fourth</a><li>
   </ul> 

这是点击第四个链接后的菜单:

    <ul class="top-menu">
  <li class="fourth-element"><a href="/">Fourth</a><li>
    <li class="second-element"><a href="/">Second</a><li>
    <li class="third-element"><a href="/">Third</a><li>
    <li class="first-element"><a href="/">First</a><li>
    </ul>

【问题讨论】:

    标签: javascript html list


    【解决方案1】:

    这里是FIDDLE DEMO

    <ul class="top-menu">
        <li class="first-element">First</li>
        <li class="second-element">Second</li>
        <li class="third-element">Third</li>
        <li class="fourth-element">Fourth</li>
    </ul>
    
    $.fn.exchangePositionWith = function(selector) {
        var other = $(selector);
        this.after(other.clone());
        other.after(this).remove();
    };
    
    $(document.body).on('click', 'ul.top-menu li' ,function(){
        var pos = $(this).closest('li').index();
        $("ul.top-menu li:eq("+pos+")").exchangePositionWith("ul.top-menu li:eq(0)");
        return false;
    });
    

    【讨论】:

      【解决方案2】:
      $('.top-menu li').live('click', function() {
           $(this).remove();
          $(this).prependTo('.top-menu');
      });
      

      【讨论】:

      • 对不起,我忘了跳过第一个。
      • .live 在最新版本的 jquery 中已弃用
      • 谢谢 abdul wakeel,这不是我想要的,但我学会了一种创建顶级菜单的新方法。
      猜你喜欢
      • 1970-01-01
      • 2014-01-04
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      相关资源
      最近更新 更多