jq03--$的解释、jq与js对象的相互转换、jq增删节点

1.   jQuery的$符号(重点)

jquery对象是一个数组。数组中包含着原生JS中的DOM对象。可以通过从数组中取值的方式获得所需要的dom对象

js命名规范允许出现的字符有:数字、字母、下划线、$。

Js命名规范允许作为变量命名开头的字符有:字母、下划线、$;但是,不允许以数字作为变量命名的开头。

var $ = “我是字符串”;

var $ = 123;

function $(){

    alert(“我是函数$”);

}

jQuery使用$符号原因:书写简洁、相对于其他字符与众不同、容易被记住。


怎么理解jQuery里面的$符号:

$实际上表示的是一个函数。

$(); // 调用上面我们自定义的函数$

$(document).ready(function(){});// 调用入口函数

$(function(){}); // 调用入口函数

$(“#btnShow”) // 获取id属性为btnShow的元素

$(“div”) // 获取所有的div元素

jQuery里面的$函数,根据传入参数的不同,进行不同的调用,实现不同的功能。返回的是jQuery对象

jQuery这个js库,除了$之外,还提供了另外一个函数:jQuery

jQuery函数跟$函数的关系:jQuery === $;

2.  jQuery对象和DOM对象的相互转换(难点

//1.js对象转换成jquery对象。 $(js对象);

//2.jquery对象转换成js对象。 1.jquery对象[索引值] 2. jquery对象.get(索引值)

 

DOM对象此处指的是:使用js操作DOM返回的结果。

var btn = document.getElementById(“btnShow”); //btn就是一个DOM对象

jQuery对象此处指的是:使用jQuery提供的操作DOM的方法返回的结果。

jQuery拿到DOM对象后又对其做了封装,让其具有了jQuery方法的jQuery对象,说白了,就是把DOM对象重新包装了一下。

(联想:手机和有手机壳的手机,手机就好比是DOM对象,有手机壳的手机就好比是jQuery对象)

var  btn = $(“#btnShow”); // $btn就是一个jQuery对象

DOM对象转换成jQuery对象:

var $btn1 = $(btn); // 此时就把DOM对象btn转换成了jQuery对象$btn1

// $(document).ready(function(){});// 调用入口函数

// 此处是将document这个js的DOM对象,转换成了jQuery对象,然后才能调用jQuery提供的方法:ready()

jQuery对象转换成DOM对象:jq对象[index]

// 第一种方式

var btn1 = $btn1[0]; // 此时就把jQuery对象$btn1转换成了DOM对象btn1 (推荐使用此方式)

// 第二种方式jquery对象.get(索引值)

var btn2 = $btn.get(0);// 此时就把jQuery对象$btn转换成了DOM对象btn2

这两种方式都要记住,使用哪一种都可以。

3.jq操作节点

3.1    添加节点append()、appendTo()

append()重点

作用:在被选元素内部的最后一个子元素(或内容)后面插入内容(存在或者直接创建出来的html元素都可以)

如果是页面中存在的元素,那么调用append()后,会把这个元素放到相应的目标元素里面去;但是,原来的这个元素,就不存在了。

       如果是给多个目标追加元素,那么方法的内部会复制多份这个元素,然后追加到多个目标里面去。

常用参数:htmlString 或者 jQuery对象

appendTo()

作用:同append(),区别是:把$(selector)追加到node中去

prepend()

作用:在元素的第一个子元素前面追加内容或节点    $(selector).prepend(node);

after()

作用:在被选元素之后,作为兄弟元素插入内容或节点    $(selector).after(node);

before()

作用:在被选元素之前,作为兄弟元素插入内容或节点    $(selector).before(node);

<body>
<
button>添加节点</button>
<
ul>
   
<li>1</li>
   
<li>2</li>
   
<li>3</li>
   
<li>4</li>
</
ul>
</
body>
<
script src="jquery-3.3.1.js"></script>
<
script>
   
$('button').click(function() {
       
//append()某个元素后面追加内容
//       
$('ul').append('<li>5</li>');
        //appendTo()将前面的内容追加到某个元素后面
        $('<li>5</li>').appendTo('ul');
   
});

</script>

3.2 删除节点:remove()

                       empty()

<body>
<
button>删除方式一</button>
<
button onclick="del()">删除方式二</button>
<
button onclick="del3()">删除方式三(删除属性)</button>
<
p>默认选中<input type="checkbox" checked></p>
<
ul>
   
<li>muzidigbig</li>
   
<li>muzidigbig</li>
   
<li>muzidigbig</li>
   
<li>muzidigbig</li>
   
<li>muzidigbig</li>
</
ul>
</
body>
<
script src="jquery-3.3.1.js"></script>
<
script>
   
$('button:first-child').click(function () {
       
$('ul').remove();
   
});
   
function del() {
       
$('ul').empty();
   
}
   
function del3() {
       
$('input').removeAttr('checked');
   
}
</
script>

补充:

// 清空指定元素的所有子元素(光杆司令)

// 没有参数

$(selector).empty();

$(selector).html(“”);

// “自杀” 把自己(包括所有内部元素)从文档中删除掉

$(selector).remove();

.empty()相似。.remove() 将元素移出DOM。 当我们想将元素自身移除时我们用 .remove(),同时也会移除元素内部的一切,包括绑定的事件及与该元素相关的jQuery数据。要删除的元素不删除数据和事件的情况下,使用.detach()来代替。


作用:复制匹配的元素

// 复制$(selector)所匹配到的元素

// 返回值为复制的新元素

$(selector).clone();

总结:

    推荐使用html(“<span></span>”)方法来创建元素或者html(“”)清空元素


3.3 节点包裹wrap()、wrapAll()

<body>
<
button onclick="bao()">节点包裹</button>
<
button onclick="baoAll()">节点包裹</button>
<
input type="text">
<
input type="text">
</
body>
<
script src="jquery-3.3.1.js"></script>
<
script>
   
function bao(){
       
//将每个input标签用p包裹
        $('input[type]').wrap('<p></p>')
   
}
    function baoAll() {
       
//将所有的input标签用p包裹
        $('input[type]').wrapAll('<p></p>')
   
}
</script>





若有不足请多多指教!希望给您带来帮助!

猜你喜欢

转载自blog.csdn.net/muzidigbig/article/details/80978247
jq