1: 库和框架的区别?
库:库是更多是一个封装好的特定的集合,提供给开发者使用,而且是特定于某一方面的集合(方法和函数),库没有控制权,控制权在使用者手中,在库中查询需要的功能在自己的应用中使用,我们可以从封装的角度理解库;
框架:框架顾名思义就是一套架构,会基于自身的特点向用户提供一套相当于叫完整的解决方案,而且控制权的在框架本身,使用者要找框架所规定的某种规范进行开发。
2: jquery 能做什么?
- 方便快捷获取DOM元素
- 动态修改页面样式
- 动态改变DOM内容
- 响应用户的交互操作
- 为页面添加动态效果
- 统一Ajax操作
- 简化常见的JavaScript任务
3: jquery 对象和 DOM 原生对象有什么区别?如何转化?
什么是jQuery对象:
通过jQuery包装DOM对象后产生的对象即jQuery对象。
jQuery对象是jQuery独有的,可以使用jQuery里的方法。
和DOM 原生对象的区别:
1、jquery选择器得到的jquery对象和标准的 javascript中的document.getElementById()取得的dom对象是两种不同的对象类型,两者不等价;
2、jQuery无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里的方法. 乱使用会报错。
$("#id").html();
document.getElementById("id").innerHTML;
意思是指:获取ID为id的元素内的html代码。这两段代码结果相同,但中间的取值过程不同。
即:$("#id").innerHTML、document.getElementById("id").html()之类的写法都是错误的。
相互转换:
- jQuery对象转成DOM对象
jquery提供了两种方法将一个jquery对象转换成一个dom对象,即[index]和get(index)
怎么是用下标呢,没错,jquery对象就是一个数组对象.
示例代码:
var $cr=$("#cr"); //jquery对象
var cr = $cr[0]; 或者 var cr=$cr.get(0);//dom对象
- dom对象转换成jquery对象
对于一个dom对象,只需要用$()把dom对象包装起来,就可以获得一个jquery对象了,方法为$(dom对象);
代码如下:
var cr=document.getElementById("cr"); //dom对象
var $cr = $(cr); //转换成jquery对象
转换后可以任意使用jquery中的方法了.
4:jquery中如何绑定事件?bind、unbind、delegate、live、on、off都有什么作用?推荐使用哪种?使用on绑定事件使用事件代理的写法?
jQuery 提供了四种事件监听的方式,分别为bind、live、delegate、on
bind()
bind()函数为每个匹配元素的一个或多个事件绑定事件处理函数。
语法
$(selector).bind(event,data,function)
event:必需。添加到元素的一个或多个事件,如 click,dblclick等;
单事件处理:例如
$(selector).bind("click",data,function);
多事件处理:
1.利用空格分隔多事件,例如$(selector).bind("click dbclick mouseout",data,function);
2.利用大括号灵活定义多事件,例如$(selector).bind({event1:function, event2:function, ...})
data:可选;需要传递的参数;
function:必需;当绑定事件发生时,需要执行的函数;
bind()的事件绑定是只对当前页面选中的元素有效。
如果希望绑定事件对未来新添加的元素也生效,使用on()、delegate()、live()等事件函数(优先使用靠前的事件函数)
要删除通过bind()绑定的事件,使用unbind()函数。
语法
$(selector).unbind(event,function)
event:可选。规定删除元素的一个或多个事件,由空格分隔多个事件值。
如果只规定了该参数,则会删除绑定到指定事件的所有函数。
function:可选。规定从元素的指定事件取消绑定的函数名。
live()
live() 向当前或未来的匹配元素添加一个或多个事件处理器;
语法
同bind()
live方法其实是bind方法的变种,其基本功能就同bind方法的功能是一样的,都是为一个元素绑定某个事件,但是bind方法只能给当前存在的元素绑定事件,对于事后采用JS等方式新生成的元素无效,而live方法则正好弥补了bind方法的这个缺陷,它可以对后生成的元素也可以绑定相应的事件。
live方法之所以能对后生成的元素也绑定相应的事件的原因归结在“事件委托”上面,所谓“事件委托”就是指绑定在祖先元素上的事件可以在其后代元素上进行使用。live方法的处理机制就是把事件绑定在DOM树的根节点上,而不是直接绑定在某个元素上。
要删除通过live()绑定的事件,使用die()函数。
语法
$(selector).die(event,function)
event:必需。规定要移除的一个或多个事件处理程序,由空格分隔多个事件值,必须是有效的事件。
function:可选。规定要移除的特定函数。
delegate()
delegate() 为指定的元素(被选元素的子元素)添加一个或多个事件处理程序
语法
$(selector).delegate(childSelector,event,data,function)
childSelector: 必需项;需要添加事件处理程序的元素,一般为selector的子元素;
event:必需项;添加到元素的一个或多个事件,例如 click,dblclick等;
data:可选;需要传递的参数;
function:必需;当绑定事件发生时,需要执行的函数;
要删除通过delegate()绑定的事件,使用undelegate()函数。
on()
on()函数用于为指定元素的一个或多个事件绑定事件处理函数。还可以额外传递给事件处理函数一些所需的数据。
语法
.on( events [,selector ] [,data ], handler(eventObject) )
events:一个或多个空格分隔的事件类型和可选的命名空间,或仅仅是命名空间,比如"click", "keydown.myPlugin", 或者 ".myPlugin"
selector:一个选择器字符串,用于过滤出被选中的元素中能触发事件的后代元素。如果选择器是 null 或者忽略了该选择器,那么被选中的元素总是能触发事件
data:当一个事件被触发时,要传递给事件处理函数的event.data
handler(eventObject):事件被触发时,执行的函数。若该函数只是要执行return false的话,那么该参数位置可以直接简写成 false
从jQuery 1.7开始,on()函数提供了绑定事件处理程序所需的所有功能,用于统一取代以前的bind()、 delegate()、 live()等事件函数。
要删除通过on()绑定的事件,使用off()函数。
.off( events [, selector ] [, handler ] )
各种方法适用的版本:
bind()------------------版本号小于3.0
live()--------------------版本号小于1.7
delegate()-------------版本号小于1.7
on()---------------------版本号大于1.7
推荐使用.on()方法绑定
1.可以绑定动态添加到页面元素的事件
2.提升效率
5:jquery 如何展示/隐藏元素?
通过 jQuery,可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素:
$("#hide").click(function(){
$("p").hide();
});
$("#show").click(function(){
$("p").show();
});
//语法
$(selector).hide(speed,callback);
$(selector).show(speed,callback);
/*可选的 speed 参数规定隐藏/显示的速度,可以取以下值:"slow"、"fast" 或毫秒。
可选的 callback 参数是隐藏或显示完成后所执行的函数名称。
还可以使用 toggle() 方法来切换 hide() 和 show() 方法。
$(selector).toggle(speed,callback);
*/
6:jquery 动画如何使用?
jQuery.animate()函数用于执行一个基于css属性的自定义动画。
语法:
$(selector).animate({params},speed,callback);
params:必需。Object类型。一个或多个css属性的键值对所构成的Object对象。
** speed :**可选。规定效果的时长。
callback: 可选。动画完成后所执行的函数名称。
实例:
$("button").click(function(){
$("div").animate({left:'250px'});//把 <div> 元素移动到左边,直到 left 属性等于 250 像素
});
/*默认地,所有 HTML 元素都有一个静态位置,且无法移动。
如需对位置进行操作,要记得首先把元素的 CSS position 属性设置为 relative、fixed 或 absolute!*/
//操作多个属性
$("button").click(function(){
$("div").animate({
left:'250px',
opacity:'0.5',
height:'150px',
width:'150px'
});
});
//使用相对值
$("button").click(function(){
$("div").animate({
left:'250px',
height:'+=150px',
width:'+=150px'
});
});
//使用队列功能
$("button").click(function(){
var div=$("div");
div.animate({height:'300px',opacity:'0.4'},"slow");
div.animate({width:'300px',opacity:'0.8'},"slow");
div.animate({height:'100px',opacity:'0.4'},"slow");
div.animate({width:'100px',opacity:'0.8'},"slow");
});
7,如何设置和获取元素内部 HTML 内容?如何设置和获取元素内部文本?
html() 方法返回或设置被选元素的内容 (inner HTML)。
类似于JavaScript中的innerHTML属性,可以用来读取或者设置某个元素中的HTML内容。
语法
$(selector).html()
如果该方法未设置参数,则返回被选元素第一个匹配元素的当前内容。
当使用该方法设置一个值时,它会覆盖所有匹配元素的内容。
text() 方法设置或返回被选元素的文本内容。
类似于JavaScript中的innerText属性,可以用来读取或者没置某个元素中的文本内容。
语法
$(selector).text()
如果该方法未设置参数,它会返回所有匹配元素的组合的文本内容(会删除 HTML 标记)。
当使用该方法设置一个值时,它会覆盖被选元素的所有内容。
8.如何设置和获取表单用户输入或者选择的内容?如何设置和获取元素属性?
jQuery提供了val()方法,使用它我们可以快速地获取和设置表单的文本框、单选按钮、以及单选按钮的值。
使用val()不带参数,表示获取元素的值
使用val()给定参数,则表示把值赋给元素
语法:
$(selector).val(value)//value可选。规定被选元素的新内容。
实例:
//获取值
$("button").click(function(){
alert($("input#mytext").val());
});
//设置值
$("button").click(function(){
$("input:text").val("Bill Gates");
});
jquery中用attr()方法来获取和设置元素属性,attr是attribute(属性)的缩写
语法:
$(selector).attr(attribute,value)
参数value用于设置属性的值。可选,缺失则用于获取元素属性
实例:
//返回图像的宽度
$("button").click(function(){
alert("Image width " + $("img").attr("width"));
});
//设置图像的 width 属性
$("button").click(function(){
$("img").attr("width","180");
});