题目1: jQuery 能做什么?
将原生DOM元素的功能实现并且满足良好的兼容性,最重要的是,可以简化代码。
jquery是一个丰富的js库,内部对js的很多复杂的方法进行了封装和加工,比如js很多方法名很冗长,jquery封装后方法就变得简便了,也考虑到了跨浏览器兼容问题,这样我们用js时需要考虑的很多问题它都帮我们解决了,这样我们使用时就比js代码要方便,高效的多。
题目2: jQuery 对象和 DOM 原生对象有什么区别?如何转化?
- 区别
- jquery选择器得到的jquery对象和标准的 javascript中的document.getElementById()取得的dom对象是两种不同的对象类型,两者不等价;
- jQuery无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里的方法. 乱使用会报错。
- 转换
- jQuery对象是一个数据对象,通过[index]的方法(就是通过下标索引寻找dom,进行操作)
如:var $v = $("#v") ; //jQuery对象
var v = $v[0]; //DOM对象
alert(v.checked) //检测这个checkbox是否被选中
jQuery本身提供,通过.get(index)方法
如:var $v = $("#v"); //jQuery对象
var v = $v.get(0); //DOM对象
alert(v.checked) //检测这个checkbox是否被选中
注:其实两者都是同一个道理,即通过索引下标的方式,来寻找dom进行转换。
- DOM对象转成jQuery对象:
对于DOM对象,只需用$()把DOM对象包装起来,就可得到jQuery对象
如:var v=document.getElementById("v"); //DOM对象
var $v=$(v); //jQuery对象
**题目3:jQuery中如何绑定事件?bind、unbind、delegate、live、on、off都有什么作用?推荐使用哪种?使用on绑定事件使用事件代理的写法?
**
- bin():为一个元素绑定一个或多个事件。
$(‘button’).bind(‘click’,function(){console.log(this)});
$(‘p’).bind(‘mouseenter mouseleave’,function(){$(this).toggleClass(‘change’)});
- unbind():$(‘p’)解除该元素绑定的事件。
- delegate():为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数;适用于当前或未来的元素(比如由脚本创建的新元素)。
- live():这种方法是将页面的document元素作为事件代理元素,太消耗资源,已经过时。在新版本中推荐用.on()法,即时在旧版本中,也推荐使用.delegate()方法来取代.live()方法。
- on():在选定的元素上绑定一个或多个事件处理函数,提供绑定事件处理的所有功能。
$('button').on('click',function(){
$('.test').append('<p>新增内容'+ ($('p').length+1) +'</p>')
console.log($('p').length)
})
- .on( events [,selector ] [,data ], handler(eventObject) )
看起来参数及其复杂,我们看一下各个参数的意思
events:一个或多个空格分隔的事件类型和可选的命名空间,或仅仅是命名空间,比如"click", "keydown.myPlugin", 或者 ".myPlugin"
selector:一个选择器字符串,用于过滤出被选中的元素中能触发事件的后代元素。如果选择器是 null 或者忽略了该选择器,那么被选中的元素总是能触发事件
data:当一个事件被触发时,要传递给事件处理函数的event.data
handler(eventObject):事件被触发时,执行的函数。若该函数只是要执行return false的话,那么该参数位置可以直接简写成 false
看几个例子
// 普通事件绑定,最简单的用法
$('div').on('click', function(e){
console.log(this);
console.log(e);
});
// 事件委托或者事件代理,想让div 下面所有的span绑定事件,可以把事件绑定到div上
$('div').on('click', 'span', function(e){
console.log(this);
console.log(e);
});
// 可以在绑定的时候给事件处理程序传递一些参数
$('div').on('click', {name: 'Byron', age: 24}, function(e){
console.log(e.data);
});
- .off( events [, selector ] [, handler ] ):移除一个事件处理函数
function aClick() {
$("div").show().fadeOut("slow");
}
$("#bind").click(function () {
$("body").on("click", "#theone", aClick)
.find("#theone").text("Can Click!");
});
$("#unbind").click(function () {
$("body").off("click", "#theone", aClick)
.find("#theone").text("Does nothing...");
});
**题目4:jQuery 如何展示/隐藏元素?**
- .hide([duration ] [,easing ] [,complete ])
用于隐藏元素,没有参数的时候等同于直接设置display属性
.css('display', 'none')
duration:动画持续多久
easing:表示过渡使用哪种缓动函数,jQuery自身提供"linear" 和 "swing"
complete:在动画完成时执行的函数
看几个例子
$('.target').hide();
$('#book').hide(300, function() {
alert('Animation complete.');
});
$('#book').hide(300, 'linear', function() {
alert('Animation complete.');
});
- .show( [duration ] [, easing ] [, complete ] )
用于显示元素,用法和hide类似
- .toggle( [duration ] [, easing ] [, complete ] )
事件处理套件也有一个名为.toggle()方法。哪一个被调用取决于传递的参数的设置
用来切换元素的隐藏、显示,类似于toggleClass,用法和show、hide类似
**题目5: jQuery 动画如何使用?**
- animate()方法用于创建自定义动画。
.animate({params}, speed, callback);
- params 定义形成动画的 CSS 属性(动画结束后的CSS)必选
- speed 规定效果的时长.值:slow,fast或毫秒,可选
- callback 动画完成后所执行的函数,可选
- .delay()设置一个定时器,以延迟 执行队列中后续的项目。
- .clearQueue()从队列中删除所有还没有运行过的项目。
- .stop()在匹配的元素上停止当前正在运行的动画。
- .finish()针对匹配的元素 停止当前 正在运行的动画,删除所有 队列中的动画,并结束所有 动画
**题目6:如何设置和获取元素内部 HTML 内容?如何设置和获取元素内部文本?**
- $(‘selector’).html():获取元素内部HTML。
- $(‘selector’).html(‘…’):设置元素内部HTML。
- $(‘selector’).text():获取元素内部文本。
- $(‘selector’).text(‘…’):设置元素内部文本。
**题目7:如何设置和获取表单用户输入或者选择的内容?如何设置和获取元素属性?**
- $(‘selector’).val():获取表单用户输入值;
- $(‘selector’).val(‘…’):设置输入值;
- $(‘selector’).attr(‘name’):获取元素属性;
- $(‘selector’).attr(‘name’,’xxx’):设置元素属性的值;
**题目8: 使用 jQuery实现如下效果**
[deml1](http://book.jirengu.com/jirengu-inc/jrg-renwu5/%E5%90%B4%E6%80%9D%E6%95%8F/js_task_14/demo1.html)
**题目9:. 使用 jQuery 实现如下效果**
[demo2](http://book.jirengu.com/jirengu-inc/jrg-renwu5/%E5%90%B4%E6%80%9D%E6%95%8F/js_task_14/demo2.html)
**题目10:实现如下效果**
[demo3](http://book.jirengu.com/jirengu-inc/jrg-renwu5/%E5%90%B4%E6%80%9D%E6%95%8F/js_task_14/demo-3.html)
**题目11: 模仿视频6,完成 左右切换的 Tab 效果**
[demo4](http://book.jirengu.com/jirengu-inc/jrg-renwu5/%E5%90%B4%E6%80%9D%E6%95%8F/js_task_14/demo-4.html)