原生js与jQuery的入口函数的加载模式不同
原生js会等到DOM元素加载完毕,并且图片也加载完毕才会执行;
jQuery会等到DOM元素加载完毕,但不会等到图片也加载完毕执行。
原生js编写多个入口函数,后面编写的会覆盖前面编写的;
而jquery后写的不会覆盖前面;
jquery入口函数的写法:
<script> //第一种写法 $(document).ready(function () { alert(" hello " ); }); //推荐写法 $(function (){ }); //其他写法相似、只是将第一种写法进行增删而已,不做介绍 <script>
jquery冲突问题
多js文件导入时,$符号会被赋予其他所用的情况下:
(1). 后面可以覆盖前面,可以将jquery js文件放在最后面导入;
(2).释放符号的使用权 : jQuery.noConflict();
(3)自定义一个访问符号
var nj=jQuery.noConflict();// 表示$换为nj来表示;
$() jQuery的核心函数
可以接收一个函数 相当于入口函数
可以接收一个字符串
字符串选择器 字符串代码片段
<jquery对象>
DOM元素 会被包装成jquery对象
jquery对象: jquery对象就是一个伪数组
jquery的静态方法: //前提明白js中静态方法和实例方法的使用
//静态方法就是类直接创建,而实例方法通过prototype的形式创建,通过创建实例的方式来调用
原生js中静态方法 forEach(function(value,index){ });
forEach不能遍历伪数组;
//jqueryforEach方法: $.each(arr,function(index,value){ } ); 可以遍历伪数组;
原生js中map方法: 遍历数组
jquery $.map(遍历的数组,每遍历一个元素的回调函数(遍历的元素,遍历到的索引));
map与foreach() 的返回值不同、 each遍历谁返回谁,foreach返回一个空数组;
each不支持在回调函数中对遍历数组进行处理;而map可以通过回调函数中return进行处理返回一个新的数组返回;
trim trim方法用于将字符串两端中的多余的空格去除;参数为字符串,返回值为没有空格的字符串
$.isWindow();//判断传入的对象是否是window对象 返回值为true和false;
$.isArray(); //判断是否为真数组;真数组返回为true;
$isFunction()
$.holdReady(true);//表示暂停 false表示开始;
jquery的选择器
属性节点和属性(任何对象都有属性,而只有DOM元素具有attribute属性节点;
jquery操纵属性和属性节点的方法(详细见手册)
jquery的事件绑定
$(function(){ $("button").click(function(){ alert("1233"); }) }); //事件绑定的第二种方式 $(function() { $("button").on("click",function(){ alert("hello wei"); }) })
//推荐使用第一种 有文字提示 而有的部分不能添加
注意点:注册多个事件不会覆盖 可以添加相同或者不同事件
事件移除
$("button").off() //不传参数移除所有参数
//一个参数会移除所有一种类型的所有事件
//两个参数会移除一种类型的指定事件
jquery事件冒泡和默认行为
什么是事件冒泡?如何阻止;//事件冒泡就是创建son和father模块,点击son事件时father事件同时触动;
什么是默认事件?如何阻止;
阻止冒泡事件: 只需要在son事件中添加return false;语句;
第二种方式:
$("son").click( function(event) { event.stopPropagation() } );
默认行为:像某些自动跳转、默认提交表单的事件;
阻止的事件中return false;
第二种方式通过 event.preventDefault();
自动触发事件:
$(".father").trigger("click"); //触发事件会同时事件冒泡; .triggerHander();//也可以自动触发 不会触动事件冒泡; $("input[type='submit']").click( function() { }); trigger: 如果利用trigger自动触发事件,会触发默认行为; triggerHander: 自动触发事件不会触发默认行为;
如果想自动触发a还行触发a的默认事件 将a包起来使用<span>,使用span的默认事件;
自定义事件:
jquery中的事件委托: $("ul").delegate("li", "click",function() { console.log($(this).html()); });
————————————————
智一面|前端面试必备练习题