博客列表 >jQuery的dom操作和事件添加的总结——2018年9月18日

jQuery的dom操作和事件添加的总结——2018年9月18日

Jackson
Jackson原创
2018年09月26日 16:32:43861浏览

           在jQuery的dom操作中,append()这个方法可以支持多个参数,也就是可以在父级一次添加多个元素,next()可以定位下一个节点,而after()是插入操作,需要区分二者,类似的还有before()和prev()。

            在线相册的思路:

  • 获取图片的相关信息,在阴影那里可以使用0、 1进行判断赋值。

  • $('<img>')创建图片元素和按钮并赋值给变量,同时给图片添加属性,.width()  .css()

  • 把图片和按钮 添加到ul中,使用append()全部添加。

  • 给按钮添加点击事件,要定位到父级li,再用next()或prev()定位到附近li,用before()或after()进行插入。

案例如下:

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>在线相册管理</title>
    <style>
        .box{
            border: 4px double green;
            width: 360px;
            height: auto;
            background-color: #efefef;
            color: #636363;
            border-radius: 2%;
        }
        .box .header{padding:15px}
        h3{text-align: center}
        .add{
            width:100px;
            height: 30px;
            border: none;
            cursor: pointer;
            background-color: coral;
        }
        .add:hover{
            font-size: 1.1rem;
            background-color: skyblue;
        }
        .main ul{
            overflow: hidden;
            padding: 0;
            margin: 0;
        }
        ul li{
            float: left;
            width: 150px;
            list-style-type: none;
            height: 200px;
            margin-left: 20px;
            margin-bottom: 10px;
            text-align: center;
        }
        li button{
            background-color: orange;
            color: white;
            border:none ;
            cursor: pointer;
            margin-left: 5px;
        }
        button:hover{
            background: skyblue;
        }
    </style>
</head>
<body>
<div class="box">
    <div class="header">
    <h3>江湖女侠排行榜</h3>
    <label for="file">输入图片地址:</label>
    <input type="file" id="file">
    <!--<input type="text" id="file">-->
    <p>
        图片类型:
        <input type="radio" name="border" id="rect" value="0" checked>直角
        <input type="radio" name="border" id="radius" value="10%">圆角
        <input type="radio" name="border" id="circle" value="50%">圆形
    </p>
    <p>
        是否添加阴影:
        <select name="shadow" id="">
            <option value="1">添加</option>
            <option value="0">不添加</option>
        </select>
    </p>
    <p><button class="add">添加图片</button></p>
    </div>
    <div class="main">
        <ul>
            <!--<li>-->
                <!--<img src="" alt="">-->
                <!--<button>前</button>-->
                <!--<button>后</button>-->
                <!--<button>删</button>-->
            <!--</li>-->
        </ul>
    </div>
</div>

<script src="../lib/jquery.js"></script>
<script>
    //添加点击事件
    $(function(){
        $('.add').on('click',function () {
            //1.获取图片的信息
            let img_url = $('#file').val();
            console.log(img_url);
            //判断用户是否选择图片
            if (img_url.length === 0){
                alert('请选择图片');
                $('#file').focus();//获取焦点
                return false;
            }
            let border = $(':radio:checked').val();
            //是否添加阴影
            let shadow = $(':selected').val();
            if (shadow == 1){
                shadow = '3px 3px 3px #666';
            }else {
                shadow = 'none';
            }
            //拼接图片地址 split(分隔符) 返回数组
            img_url = 'http://myphp.com/jquery/9.18/images/'+img_url.split('\\')[2];
            //创建一个图片
            let img = $('<img>')
                .attr('src',img_url)
                .width('150px')
                .height('150px')
                .css({
                    'border-radius': border,
                    'box-shadow': shadow
                });
            //创建三个按钮
            let before = $('<button></button>').text('前移');
            let after = $('<button></button>').text('后移');
            let remove = $('<button></button>').text('删除');
            //在li中添加图片和三个按钮
            let container = $('<li>');
            container.append(img, before, after, remove);//append()支持多个参数
            container.appendTo('ul');//把li添加到ul

            //按钮添加事件
            before.click(function () {
                //获取到要移动的图片 父级li
                let content = $(this).parent();
                let prev = content.prev();//获取到前面的元素
                prev.before(content);
            });
            //后移
            after.click(function(){
                let content = $(this).parent();
                let next = content.next();//next()才是下一个 after()是插入
                next.after(content);
            });
            //删除
            remove.click(function(){
                if (confirm('确认删除')) {
                    let content = $(this).parent();
                    content.remove();
                }
                return false;
            });
        })
    }
    )
</script>
</body>
</html>
运行实例 »

点击 "运行实例" 按钮查看在线实例

总结:jquery的事件容易和js的原生事件混淆,js的事件有on且事件是作为一个对象的属性,而jquery的事件没有on,是作为对象的方法,或者用on(事件名,function)。jquery的选择器和方法需要更熟练,思路还需要磨炼。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议