jQuery-01

2019-09-25  本文已影响0人  xiaohan_zhang
入口函数写法
        // 第一种
        $(document).ready(function () {
           alert('1');
        });
        // 第二种
        jQuery(document).ready(function () {
           alert('2');
        });
        // 第三种---推荐
        $(function () {
            alert('3');
        });
        // 第四种
        jQuery(function () {
           alert('4');
        });
核心函数

$(); 代表用jQuery的核心函数。

  1. 接收一个函数
$(function () {
    alert("接收一个函数");
});
  1. 接收一个字符串
    2.1 接收一个字符串选择器 返回一个jQuery对象,对象中保存了找到的DOM元素
var $box1 = $(".box1");
var $box2 = $("#box2");
console.log($box1);
console.log($box2);

  2.2 接收一个代码片段 返回一个jQuery对象,对象中保存了创建的DOM元素

var $p = $("<p>我是段落</p>");
console.log($p);
// 将新创建的P标签添加到box1中
$box1.append($p);
  1. 接收一个DOM元素 会被包装成一个jQuery对象返回
var span = document.getElementsByTagName('span')[0];
console.log(span);
var $span = $(span);
console.log($span);
jQuery对象

jQuery对象是伪数组。
伪数组:有从0到length-1的属性,并且有length属性。

var $div = $('div');
console.log($div);
jQuery中的静态方法
/*
* jQuery的each静态方法
* 第一个参数:当前遍历到的索引
* 第二个参数:遍历到的元素
* jQuery的each方法可以遍历伪数组
* */
$.each(arr, function (index, value) {
    console.log(index, value);
});
$.each(obj, function (index, value) {
    console.log(index, value);
});
/*
* jQuery的map静态方法
* 第一个参数:要遍历的数组
* 第二个参数:每遍历一个元素之后执行的回调函数
* 回调函数的参数:
* 第一个参数:遍历到的元素
* 第二个参数:遍历到的索引
* jQuery的map方法可以遍历伪数组
* */
$.map(arr, function (value,index) {
    console.log(index, value);
});

$.map(obj, function (value,index) {
    console.log(index, value);
});

jQuery的each静态方法和map静态方法的区别:

  1. each静态方法默认的返回值为当前遍历的数组或伪数组;
    map静态方法默认的返回值为空数组;
var res1 = $.each(obj, function (index, value) {

});
var res2 = $.map(obj, function (value,index) {
    return obj;
    // return value + index;
});
console.log("each res = ", res1);
console.log("map res = ", res2);
  1. each静态方法不支持在回调函数中对遍历的数组进行处理;
    map静态方法可以在回调函数中通过return对遍历的数组进行处理,生成一个新的数组返回;


var ss = '  hahahah     ';
var res = $.trim(ss);
console.log('-----' + ss + '-----');    // -----  hahahah     -----
console.log('-----' + res + '-----');   // -----hahahah-----
var arr = [1,2,3];
var obj = {'name':'xiaolan', 'age':17};
var f = function () {}
var w = window;

var res1 = $.isWindow(arr);
var res2 = $.isWindow(obj);
var res3 = $.isWindow(f);
var res4 = $.isWindow(w);
console.log(res1);  // false
console.log(res2);  // false
console.log(res3);  // false
console.log(res4);  // true
var arr = [1,2,3];
var obj = {'name':'xiaolan', 'age':17};

var res5 = $.isArray(arr);
var res6 = $.isArray(obj);
console.log(res5);  // true
console.log(res6);  // false
var arr = [1,2,3];
var f = function () {}

var res7 = $.isFunction(f);
var res8 = $.isFunction(arr);
var res9 = $.isFunction(jQuery);
console.log(res7);  // true
console.log(res8);  // false
console.log(res9);  // true
// 暂停入口函数的执行
$.holdReady(true);
$(function () {
    alert("ready");
});

var btn = document.getElementsByTagName('button')[0];
btn.onclick = function () {
    // 恢复ready函数执行
    $.holdReady(false);
}
内容选择器
<style>
    div{
        width: 50px;
        height: 100px;
        background-color: deepskyblue;
        margin-top: 5px;
    }
</style>
<script>
    $(function () {
        var $div1 = $('div:empty');
        console.log($div1);  // 找到1个

        var $div2 = $('div:parent');
        console.log($div2); // 找到4个

        var $div3 = $('div:contains("我是div")');
        console.log($div3); // 找到2个

        var $div4 = $('div:has("span")');
        console.log($div4); // 找到2个
    });
</script>

<body>
    <div></div>
    <div>我是div</div>
    <div>哈哈哈我是div</div>
    <div><span></span></div>
    <div><p></p></div>
</body>
属性和属性节点

对象中保存的变量是属性;

function Person() {

}
var p = new Person();
p.name = 'xiaolan';
p['age'] = 17;
console.log(p.name, p.age);

HTML标签中添加的属性 叫做属性节点;
DOM元素的attributes属性中的所有内容都是属性节点;
<span name="span_name"></span>

操作属性节点:
DOM元素.setAttribute("属性名称","值");
DOM元素.getAttribute("属性名称");
任何对象都有属性,但是只有DOM对象才有属性节点。

  1. attr()
    作用:获取或者设置属性节点的值
    可以传递一个参数,也可以传递两个参数
    如果传递一个参数:代表获取属性节点的值
    如果传递两个参数:代表设置属性节点的值
    注意点:
    如果是获取,无论找到多少个元素,只会返回第一个元素指定属性节点的值;
    如果是设置,找到多少个元素,就会设置多少个元素,如果设置的属性不存在,系统会自动新增;
console.log($('span').attr("class"));   // span1
$('.span1').attr("class", "span3");
console.log($('span').attr("class"));   // span3
  1. removeAttr()
    作用:删除属性节点
    注意点:会删除所有找到元素的指定属性节点
    <script>
        $(function () {
            console.log($('span').attr("class"));   // span1
            $('.span1').attr("class", "span3");
            console.log($('span').attr("class"));   // span3
            // $('.span1').attr("abc", "hahaha");

            $('.span2').removeAttr("name");
            $('.span2').removeAttr("class name");   // 删除多个属性
        });
    </script>

<body>
<span class="span1" name="aaa"></span>
<span class="span2" name="bbb"></span>
</body>
  1. prop()
    作用:获取或者设置DOM元素属性的值
  2. removeProp()
    作用:删除DOM元素属性
    特点同attr()和removeAttr();
    注意点:prop()、removeProp()也可以操作属性节点
$('span').eq(0).prop("test","666"); // 第一个span
console.log($('span').prop("test")); // 666
$('span').removeProp("test");

// 操作属性节点
$('span').prop("class", "ssss");
console.log($('span').prop("class"));

console.log($('input').prop("checked"));    // true
console.log($('input').prop("checked"));    // checked

官方推荐,在操作属性节点时,具有true和false两个属性的属性节点,如checked、selected、disabled使用prop(),其它使用attr()。

操作class属性的方法
<script>
    $(function () {
        var btns = $('button')
        btns[0].onclick = function () {
            $('div').addClass('class1');
            $('div').addClass('class1 class2');
        };
        btns[1].onclick = function () {
            $('div').removeClass('class2');
            $('div').removeClass('class1 class2');
        };
        btns[2].onclick = function () {
            $('div').toggleClass('class2');
            // $('div').toggleClass('class1 class2');
        };
    });
</script>

<body>
<button>添加类</button>
<button>删除类</button>
<button>切换类</button>
<div></div>
</body>
文本值相关方法
<script>
    $(function () {
        var btns = $('button');
        btns[0].onclick = function () {
            // html() 和原生js的innerHTML一样
            $('div').html('<p>我是段落<span>我是span</span></p>');    // 在div中增加html标签
        };
        btns[1].onclick = function () {
            console.log($('div').html());
        };
        // text() 和原生innerText一样
        btns[2].onclick = function () {
            $('div').text('哈哈哈哈我是div');
        };
        btns[3].onclick = function () {
            console.log($('div').text());
        };
        btns[4].onclick = function () {
            $('input').val('输入点什么呢');
        };
        btns[5].onclick = function () {
            console.log($('input').val());
        };

    });
</script>
<body>
    <button>设置HTML</button>
    <button>获取HTML</button>
    <button>设置text</button>
    <button>获取text</button>
    <button>设置value</button>
    <button>获取value</button>
    <div></div>
    <input type="text">
</body>
操作样式方法
$('div').css('width', '100px');
$('div').css('height', '100px');
$('div').css('background', 'red');
$('div').css('width','100px').css('height', '100px').css('background', 'blue');
$('div').css({
    width: "100px",
    height: "100px",
    background: "green"
});
console.log($('div').css('width')); // 100px
操作尺寸和位置
<script>
    $(function () {
        var btns = $('button');
        btns[0].onclick = function () {
            // 获取元素宽度
            console.log($('.father').width()); // 200
            // offset() 获取元素距离窗口的偏移位
            console.log($('.son').offset().left);   // 150
            // position() 获取元素距离定位元素的偏移位,只能获取 不能设置
            console.log($('.son').position().left); // 50
        };
        btns[1].onclick = function () {
            // 设置元素宽度
            $('.father').width('500px');
            // 设置元素距离窗口的偏移位
            $('.son').offset({
                left: 10
            });
            // position只能获取 不能设置
            $('.son').css({
                left: 10
            });
        };
    });
</script>
<body>
    <div class="father">
        <div class="son"></div>
    </div>
    <button>获取</button>
    <button>设置</button>
</body>
console.log($(".scroll").scrollTop());

获取网页滚动的偏移位
注意点:为了保证浏览器的兼容 按照如下写法(IE认为网页滚动是body,其它浏览器是html)

console.log($("html").scrollTop() + $("body").scrollTop());

设置滚动的偏移位

$(".scroll").scrollTop(300);

设置网页滚动的偏移位

$("html,body").scrollTop(300);
上一篇下一篇

猜你喜欢

热点阅读