如何将无序列表分成两部分?

时间:2015-02-02 21:42:12

标签: javascript jquery html css

我有无序列表,我想在某些屏幕尺寸上分成两部分,我试着跟随jQuery。

HTML是:

<ul class="menu-primary">
   <li class="menu-item">home</li>
   <li class="menu-item">Products</li>
   <li class="menu-item">Settings</li>
   <li class="menu-item">Contact</li>
   <li class="right search">
      <form class="searchform search-form">
         <input type="text">
      </form>
   </li>
</ul>

当视口小于800px时,我希望将这个无序列表分成两部分

<ul class="menu-primary">
   <li class="menu-item">home</li>
   <li class="menu-item">Products</li>
   <li class="menu-item">Settings</li>
   <li class="menu-item">Contact</li>
</ul>

<ul class="searchform-block">
   <li class="right search">
      <form class="searchform search-form">
         <input type="text">
      </form>
   </li>
</ul>

所以我尝试了以下jQuery,但是有一些问题。

jQuery的:

(function($){

    function viewport() {

        var e = window, 
            a = 'inner';

        if (!('innerWidth' in window )) {
            a = 'client';
            e = document.documentElement || document.body;
        }

        return { width : e[ a+'Width' ] , height : e[ a+'Height' ] };

    }

    /**
     * Responsive Navigation
     */
    if ( viewport().width < '800' ) {
        $( '.menu-primary li' ).each(function(i){
            if ( $(this).hasClass('search') ) {
                $(this).before('</ul><ul class="searchform-block">');
            }
        });
    }

})(jQuery);

但是上面jQuery的结果是完全出乎意料的。

<ul class="menu-primary">
   ...
   <li class="menu-item">Contact</li>
   <ul class="searchform-block"></ul>
   <li class="right search">
      <form class="searchform search-form">
         <input type="text">
      </form>
   </li>
</ul>

注意:我也使用 superfish.min.js 作为菜单。

1 个答案:

答案 0 :(得分:1)

你正在做的是不正确的,因为jQuery试图纠正before函数中的html。 你应该做的是在ul.menu-primary之后创建ul标记元素,并将li.search移动到第二个无序列表。 像这样:

var tmpLiEl=null;
$( '.menu-primary li' ).each(function(i){
    if ( $(this).hasClass('search') ) {
        tmpLiEl=$(this).detach();
    }
});
$('.menu-primary').after('<ul class="searchform-block"></ul>');
tmpLiEl.appendTo('.searchform-block');