jQuery中获取尺寸、位置和被卷去的距离

一、获取元素的尺寸、位置和被卷去的距离

  1. 获取元素的尺寸
<body>
    <div class="box"></div>
    <script>
        // 1. 获取元素宽高(不包括 padding 和 border)
        console.log($('.box').width());
        console.log($('.box').height());

        // 2. 获取元素宽高 (包括 padding, 不包括 border)
        console.log($('.box').innerWidth());

        // 3. 获取元素宽高 (包括 padding, 包括 border)
        console.log($('.box').outerWidth());

        // 4. (了解)获取元素宽高 (包括 padding, 包括 border, 包括 margin)
        console.log($('.box').outerWidth(true));

        // 5. 设置元素的宽高, 直接在方法中添加要设置的数值
        // $('.box').width(300)
        // $('.box').innerWidth(300)
        $('.box').outerWidth(300)
    </script>
</body>

宽高都是同理,记忆方法可以由内向外去记
盒子的宽度由 content、padding、border组成,包含关系由内向外就是,width、innerWidth、outerWidth
包含margin的话只需要在 outerWidth 方法中加上 true 即可

  1. 获取元素的位置
        // 1. 获取元素距离页面左侧和顶部的距离
        console.log($('.father').offset()); // 结果是一个对象
        console.log($('.father').offset()['left']);
        console.log($('.father').offset()['top']);
        console.log($('.father').offset().left);
        console.log($('.father').offset().top);

        // 2. 设置元素在文档中的偏移位置

        $('.father').offset({
            left: 400,
            top: 200s
        })

        // 3. 获取元素相对定位父级元素的左侧和顶部的距离 
        console.log($('.son').position());
        console.log($('.son').position().left);
        console.log($('.son').position().top);

        // 3.1 上述 position 方法不能设置元素的偏移位置

  1. 获取元素被卷去的头部
        // 1. 获取元素中内容被卷去的距离
        // 给 .box 注册滚动事件
        $('.box').scroll(function() {
            console.log($(this).scrollTop());
        })

        // 2. 给浏览器 window 绑定滚动事件
        $(window).scroll(function() {
            console.log($(this).scrollTop());
        })

想要获取整个页面被卷去的头部,固定使用 $(‘html, body’).scrollTop()

二、新的绑定事件的方式


        $(function() {
            // 1. 绑定单个事件类型 ele.type(fn)
            // $('.box').click(function() {
            //     console.log(123);
            // })

            // 2. 给元素绑定多种事件类型 e;e.on({type1: fn1,type2: fn2})
            // $('.box').on({
            //     click: function() {
            //         console.log(456);
            //     },
            //     mouseover: function() {
            //         console.log(123);
            //     }
            // })

            // 2.1 多个事件类型的事件处理函数相同    ele.on('type1 type2', fn)
            $('.box').on('click mouseover', function() {
                console.log(123);
            })
        })

jQuery中的事件委托

语法:ele.on(‘type’, ‘target-selector’, fn)

举例:

     $('ul').on('click', 'li', function() {
            console.log(123);
        })
	// 利用事件冒泡,将事件处理程序绑定到父元素身上,具体的触发元素还是当前点击的 元素

	// 我们希望点击 li 打印出 123 ,但是 li 是可以动态创建的,所以将点击事件绑定到父元素 ul 身上,即使有新的 li 出现,
	// 也会通过冒泡触发 ul 的点击事件(this 指向当前点击的元素: li)	

有绑定肯定有解除啦(解除事件绑定和事件委托)

就直接使用 off() 方法,要解除谁的,就ele.off()

        // // 1. 移除当前元素身上绑定的所有事件: off()
        // $('div').on('click mouseover', function() {
        //     console.log(123);
        // })

        // 移除所有事件
        // $('div').off()

        // // 2. 移除元素身上绑定的某个事件: off(type)
        // 移除单个事件
        // $('div').off('click')

        // // 3. 解除事件委托的绑定:off(type, target) 
        // $('ul').on('click mouseover', 'li', function() {
        //     console.log(456);
        // })

        // 解除事件委托
        // $('ul').off('click', 'li')

        // // 4. 为某个元素只绑定一次事件:one()

        // 事件处理函数只会执行一次
        $('div').one('dblclick', function() {
            console.log('双击事件触发');
        })

元素的自动触发

以点击事件举例

  1. ele.click()
  2. ele.trigger(‘click’)
    效果是一样的

阻止事件冒泡和默认行为(跟原生 js 是一模一样的)

阻止冒泡:e.stopPropagation()
阻止默认行为:e.preventDefault()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值