美文网首页吃饭用的前端
jQuery(三)——动态操作元素

jQuery(三)——动态操作元素

作者: CNLISIYIII | 来源:发表于2019-04-20 15:50 被阅读0次

(一)动态创建元素

语法:$('<li></li>');
返回一个新创建的jQuery对象

(二)动态追加元素

1.向父元素最后追加

语法1:新创建jQuery对象.appendTo('父元素选择器' 或 父元素jQuery对象);

代码举栗:

<body>
    <button>点击追加li</button>
    <ul class="ul1"></ul>
    <script src="lib/jquery-1.12.4.js"></script>
    <script>
        $('button').click(function() {
            //创建jQuery对象li。li中的内容可以.text()
            // var newLi = $('<li>我是新li</li>');
            var newLi = $('<li></li>').text(Math.random());            
            //追加到ul中。appendTo()中的内容可以放任何能表示ul的方法。
            // newLi.appendTo( 'ul' );
            // newLi.appendTo( $('.ul1') );
            newLi.appendTo( $('.ul1')[0] );
        });
    </script>
</body>

语法2:父元素jQuery对象.apeend(新创建的jQuery对象);

代码举栗:

<body>
    <button>点击追加li</button>
    <ul class="ul1"></ul>
    <script src="lib/jquery-1.12.4.js"></script>
    <script>
        $('button').click(function() {
            var newLi = $('<li></li>').text(Math.random());            
            //追加到ul中。
            // $('.ul1').append(newLi);
            $('.ul1').append('<li>我是新li</li>');
        });
    </script>
</body>

2.向父元素最前面追加

语法1:新创建jQuery对象.prependTo('父元素选择器');
语法2:父元素jQuery对象.prepend(新创建的jQuery对象);

代码举栗:

<body>
    <button>点击追加li</button>
    <ul class="ul1"></ul>
    <script src="lib/jquery-1.12.4.js"></script>
    <script>
        $('button').click(function() {
            var newLi = $('<li></li>').text(Math.random()); 
            //追加到ul中           
            // newLi.prependTo('.ul1');
            $('.ul1').prepend(newLi);
        });
    </script>
</body>

(三)动态删除元素

语法:jQuery对象.remove();
删除谁就用谁调用。

(四)清空元素

语法1:jQuery对象.empty(); 推荐使用。
语法2:**jQuery对象.html(''); **
语法2虽然清空了标签内容,但内存中相关事件还在,占内存。

代码举栗:(操作英雄列表)

<body>
    <button class="btn1">创建英雄列表</button>
    <button class="btn2">清空</button>
    <ul>
        <!-- <li>
            <span title="坦克">亚瑟</span>
            <a href="javascript:">删除</a>
        </li> -->
    </ul>
    <script src="lib/jquery-1.12.4.js"></script>
    <script>
        //后端数据
        var heros = [
            { name: '亚瑟', type: '坦克' },
            { name: '后裔', type: '射手' },
            { name: '百里守约', type: '射手' },
            { name: '貂蝉', type: '法师' },
            { name: '鲁班', type: '射手' },
            { name: '李白', type: '刺客' },
        ];
        //添加
        $('.btn1').click(function () {
            for (var i = 0; i < heros.length; i++) {
                var obj = heros[i];
                var newLi = $('<li></li>');
                //定义内容
                var htmlStr = `
                    <span title="${obj.type}">${obj.name}</span> 
                    <a href="javascript:">删除</a>
                `;
                newLi.html(htmlStr); //设置li的内容
                newLi.appendTo('ul'); //追加

                //定义内容也可以用另一种语法:
                // var htmlStr = `
                //     <li>
                //         <span title="${obj.type}">${obj.name}</span> 
                //         <a href="javascript:">删除</a>
                //     </li>
                // `;
                // $('ul').append(htmlStr); //追加
            }
            //删除
            $('a').click(function () {
                $(this).parent().remove();
            });
        });
        //清空
        $('.btn2').click(function() {
            // $('ul').html(''); //把ul内容设置为空。
            $('ul').empty();
        });
    </script>
</body>

购物车案例

<script>
    // 准备:动态生成表格
    // 功能1:点击thead中的复选框,实现全选(控制thead中所有的复选框)
    // 功能2:点击tbody中的复选框,控制thead中全选是否选中
    // 功能3:封装实现计算总数量和总价格
    // 功能4:点击加按钮实现商品数量增加
    // 功能5:点击减按钮实现商品数量递减
    // 功能6:点击删除按钮删除单种商品
    // 功能7:删除所选商品
    // 功能8:清理购物车
    var datas = [
      { pName: '牛奶', src: './uploads/01.jpg', price: 10, count: 1 },
      { pName: '三只松鼠', src: './uploads/02.jpg', price: 30, count: 4 },
      { pName: '蓝牙播放器', src: './uploads/03.jpg', price: 100, count: 1 },
      { pName: '大米', src: './uploads/04.jpg', price: 50, count: 10 },
      { pName: '路由器', src: './uploads/05.jpg', price: 110, count: 1 },
      { pName: '罐头', src: './uploads/06.jpg', price: 20, count: 5 }
    ]

    for (var i = 0; i < datas.length; i++) {
      var obj = datas[i];
      var $tr = $('<tr></tr>').appendTo('tbody');
      var htmlStr = `
          <td>
            <input type="checkbox">
          </td>
          <td>
            <img src="${obj.src}">
            <p>${obj.pName}</p>
          </td>
          <td>
            ${obj.price}¥
          </td>
          <td>
            <div class="count-c clearfix">
              <a href="javascript:" class="reduce ${obj.count == 1 ? 'disabled' : ''}" >-</a>
              <input type="text" readonly value="${obj.count}">
              <a href="javascript:" class="add">+</a>
            </div>
          </td>
          <td>
            ${obj.count * obj.price}¥
          </td>
          <td>
            <a href="javascript:" class="del">删除</a>
          </td>
      `;
      $tr.html(htmlStr);
    }

    $('thead input').click(function () {
      $('tbody input[type=checkbox]').prop('checked', this.checked);
      getTotalCountAndTotalPrice();
    });

    $('tbody input[type=checkbox]').click(function () {
      if (this.checked == false) {
        $('thead input').prop('checked', false);
      }
      getTotalCountAndTotalPrice();
    });

    function getTotalCountAndTotalPrice() {
      var trs = $('tbody input[type=checkbox]:checked').parent().parent();
      var totalCount = 0;
      var totalPrice = 0;
      for (var i = 0; i < trs.length; i++) {
        var trCount = trs.eq(i).find('input[type=text]').val(); //获取当前行内的count数
        var trPrice = trs.eq(i).find('td').eq(4).text(); //获取当前行内的price数
        totalCount += parseInt(trCount);
        totalPrice += parseFloat(trPrice);
      }
      $('#totalCount').text(totalCount);
      $('#totalPrice').text(totalPrice + '¥');
    }

    $('.add').click(function () {
      var $txt = $(this).prev();
      var count = $txt.val();
      count++;
      if (count > 99) {
        $(this).addClass('disabled');
        count = 99;
        alert('人家不要再多了啦~');
      }
      $txt.val(count);
      var $tr = $(this).parent().parent().parent();
      var price = count * parseFloat($tr.find('td:eq(2)').text());
      $tr.find('td:eq(4)').text(price + '¥');
      $tr.find('input[type=checkbox]').prop('checked', true);
      getTotalCountAndTotalPrice();
      $tr.find('.reduce').removeClass('disabled');

    });

    $('.reduce').click(function () {
      var $txt = $(this).next();
      var count = $txt.val();
      count--;
      if (count < 1) {
        $(this).addClass('disabled');
        count = 1;
        alert('人家不能再少了啦~');
      }
      $txt.val(count);
      var $tr = $(this).parent().parent().parent();
      var price = count * parseFloat($tr.find('td:eq(2)').text());
      $tr.find('td:eq(4)').text(price + '¥');
      $tr.find('input[type=checkbox]').prop('checked', true);
      getTotalCountAndTotalPrice();
    });

    $('.del').click(function () {
      var isOk = confirm('真的不要人家了嘛?');
      if (isOk) {
        $(this).parent().parent().remove();
      }
      getTotalCountAndTotalPrice();
      showOrHideInfo();
    });

    function showOrHideInfo() {
      var len = $('tbody tr').length;
      if (len == 0) {
        $('.info').show(500);
        $('.car').hide();
      }
    }

    $('.del-all').click(function () {
      var trs = $('tbody input[type=checkbox]:checked').parent().parent();
      if (trs.length == 0) {
        alert('你还没有选中人家啦!');
      }
      else {
        var isOk = confirm('真的不要人家了嘛?');
        if (isOk) {
          trs.remove();
        }
        getTotalCountAndTotalPrice();
        showOrHideInfo();
      }
    });

  </script>

相关文章

  • jQuery(三)——动态操作元素

    (一)动态创建元素 语法:$(' ');返回一个新创建的jQuery对象 (二)动态追加元素 1.向父元素最后追...

  • jQuery动态操作元素

    越看越觉得我家美丽金毛又可爱又迷人 先来张我家好美丽的照片提神醒脑 jQuery入口函数 一般我们在链入js文件的...

  • jQuery 节点操作

    jQuery 节点操作 1、动态创建元素 2、添加元素 3、html创建元素 4、清空元素empty()、html...

  • jQuery 的一些功能介绍

    【目录】 一、jQuery 如何获取元素二、jQuery 的链式操作是怎样的三、jQuery 如何创建元素四、jQ...

  • jquery设计思想书目录

    jQuery-选择网页元素 jQuery-改变结果集 jQuery-链式操作 jQuery-元素的操作:取值和赋值...

  • jQuery

    jQuery - 简书 jQuery 库包含以下特性:HTML 元素选取,HTML 元素操作,CSS 操作,HTM...

  • You might not need jQuery——笔记

    元素操作jQuery JS jQuery JS jQuery JS element.insertAdjacentH...

  • jQuery

    jQuery 如何获取元素 jQuery 的链式操作是怎样的 jQuery 如何创建元素 jQuery 如何移动元...

  • JavaScript之jQuery

    九、jQuery 目录:初识jQuery及公式、jQuery选择器、jQuery事件、jQuery操作DOM元素 ...

  • jQuery节点操作和元素尺寸

    jQuery节点操作 创建元素 语法:$(' ); 追加元素1 向父元素最后追加语法:父元素jQuery对象.a...

网友评论

    本文标题:jQuery(三)——动态操作元素

    本文链接:https://www.haomeiwen.com/subject/eyklgqtx.html