如何'剪切'DOM元素并将其显示在其他位置

How to 'cut' DOM element and display it in other place?

本文关键字:显示 位置 其他 元素 剪切 DOM 如何      更新时间:2023-09-26

我有网站,只有当视口宽度小于768px时,我想从.tab-content"剪切"每个div#id,并将每个div添加到每个li

我的HTML页面:

    <section id="menu">
    <div class="container">
        <div class="row">
            <div class="col-xs-12">
                <ul id="menu-nav" class="nav nav-pills text-center">
                    <li class="active"><h2><a href="#about" data-toggle="tab">About</a></h2></li>
                    <li><h2><a href="#services" data-toggle="tab">Services</a></h2></li>
                    <li><h2><a href="#contact"  data-toggle="tab">Contact</a></h2></li>
                </ul>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12">
                <div class="tab-content">
                    <div class="tab-pane active" id="about">
                        <div class="col-sm-8 col-sm-offset-2">
                            <p class="text-center">
                            Lorem ipsum dolor sit amet, consectetur adipisicing elit. Debitis odit id praesentium, maxime, harum corporis officia laboriosam earum laudantium mollitia et quas, iure enim expedita. Nam sit, est libero obcaecati.
                            </p>
                        </div>
                    </div>
                    <div class="tab-pane" id="services">
                        <div class="col-sm-8 col-sm-offset-2">
                            <p class="text-center">
                            Lorem ipsum dolor sit amet, consectetur adipisicing elit. Debitis odit id praesentium, maxime, harum corporis officia laboriosam earum laudantium mollitia et quas, iure enim expedita. Nam sit, est libero obcaecati.
                            </p>
                        </div>
                    </div>
                    <div class="tab-pane" id="contact">
                        <div class="col-sm-8 col-sm-offset-2">
                            <p class="text-center">
                            Lorem ipsum dolor sit amet, consectetur adipisicing elit. Debitis odit id praesentium, maxime, harum corporis officia laboriosam earum laudantium mollitia et quas, iure enim expedita. Nam sit, est libero obcaecati.
                            </p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</section>

我尝试对每个div#ID使用jquery,但它不起作用。

  $(document).ready(function(){
    if ($(window).width() < 768) {
      var divAbout = $('#about').pop();
      $(divAbout).appendTo('#menu-nav li:first-of-type');
    }
  });

我想在手机上看到这个结果:

<li>
<h2>About</h2>
<div id="about">
...
</div>
</li>

其他潜水艇也是如此。

您可以使用调整大小处理程序并执行

var flag;
$(window).on('resize.menu', function () {
    var width = $(window).width(),
        $ul = $('#menu-nav');
    if (width < 768 && flag != 1) {
        flag = 1;
        $('#menu .tab-content .tab-pane').each(function () {
            $(this).appendTo($ul.find('li:has(a[href="#' + this.id + '"])'))
        });
    } else if (width >= 768 && flag != 2) {
        flag = 2;
        $ul.find('.tab-pane').appendTo('#menu .tab-content');
    }
}).trigger('resize.menu')

演示:Fiddle

希望您希望开发一个响应式的web设计。而不是剪切DOM并将其添加到li标记中。使用CSS3 media queries可以根据元素宽度显示和隐藏元素。

但这里有一个解决您问题的方法:

 $(document).ready(function(){
   if ($(window).width() < 768) {
       $(".tab-content div").each(function(index, ele) {
           var id = this.id; // about , contact
           $("li a[href='#'"+id+"]").parent().parent().append(this);
           // this will match li with a having href="#about" etc
       });
   }
});