jq定制化

118 阅读1分钟
  1. $.extend()函数用于将一个或多个对象的内容合并到目标对象
  2. $.extend([deep],target,objectN)
  • deep 可选。 Boolean类型 指示是否深度合并对象,默认为false
  • target Object类型 目标对象,其他对象的成员属性将被附加到该对象上
  • objectN 需要被合并的对象
<body>
    <script src="./jquery-1.12.4.js"></script>
    <script>
        var car1 = {
            color: { name: '水晶白', price: '1000w' }
        }
        var car2 = {
            carname: '保时捷',
            color: { name: '酷酷酷' }
        }
        function showCar(obj) {
            var car1 = {
                color: { name: '水晶白', price: '1000w' }
            }
            //$.extend(car1,obj)不深度合并
            $.extend(true, car1, obj)//深度合并
            console.log(car1)
            //document.write(`汽车颜色:${car1.color.name}`)
            // document.write(`汽车颜色:${car1.color.price}`)
        }
        showCar(car2);
    </script>
  • $.fn.extend() 函数为jQuery扩展一个或多个实例属性和方法
  • $.fn是jQuery的原型对象
  • $.fn.extend()方法用于为jQuery的原型添加新的属性和方法
  • 这些方法可以在jQuery实例对象上调用,$('') 就叫做jQuery对象
实现取消和全选功能
<body>
    <button id="btn1">全选</button>
    <h1>爱好</h1>
    <input type="checkbox" name="" id=""><input type="checkbox" name="" id=""><input type="checkbox" name="" id=""><script src="./jquery-1.12.4.js"></script>
      <script>
      $.fn.extend:function(){
        checked:function(){
        this.each(function(i,e){
            console.log(e.checked)
            if(e.checked==false){
            e.checked=true;
            $('#btn1').text('取消')
            }else{
            e.checked=false;
            $('#btn1').text('全选')
            }
        })
      }
    $('#btn1').click(function(){
      $('input[type=checkbox]').checked();
    })  
原生转成jq对象
let h1 = document.querySelector('h1')
console.log( $(h1).get(0) )
jq对象转原生的方法
第一种 $(h1)[0]
使用$(h1).get(0)方法 可以把单个的jq元素转成原生dom对象
获取的行内元素的样式
console.log( h1.style.display );
getComputedStyle是用来获取元素的最终样式,它不仅可以获取行内样式,
也可以获取嵌入式样式,最终获取到的样式是根据优先级来决定的,而style只能获取行内样式
console.log( window.getComputedStyle($('h1').get(0),null).color)