jquery DOM&事件
2017-02-20 本文已影响0人
candy252324
1.说说库和框架的区别?
- 库:用来提供一些方法的集合,避免重复定义相同功能的函数并具有一定的模式兼容性,
- 框架,规范开发者按照框架的设计去做一些事,而非简单的工具集的概念,框架可以提供相应的库或者基于库来实现,但库一般不会具备框架的规范性。
2.jquery 能做什么?
jQuery是一个轻量级的Javascript库,拥有强大的选择器,核心依然是Javascript,所以凡是Javascript能做的事,jQuery都能做。
- 样式操作
$("ele:odd").css("color","olive")
$("ele:has(span)").css({
"font-size" : "20px",
"border" : "1px solid red",
"background" : "pink",
})
- DOM操作
$("ele").append("<div>xxxxxx</div>")
$("ele").find(".class")
$("li").add("p") //将p加到li的合集中一起设置样式
- 事件
$ele.on(event [,selector] [,data] ,handler(obj))
,方括号内为可选参数。
//事件代理,事件绑定在ele上
$("ele").on("click", "li", function(e){
alert(e.target.textContent)
})
//elert 出 “hello candy”
$(".btn").on("click", {name:"candy"}, function(e){
alert("hello" + event.data.name)
})
- 动画
// 如下,三个动画会顺次执行
$("div").on("click",function(){
$(this).animate({height:"500px"},"slow")
.animate({"border":"1px solid green","border-radius": "50%"})
.animate(
{ width: "+=100px"},
{ duration:3000,
step: function(now,fx){
$("p").html("当前宽度:"+now); //now是动画当前值,这里即是当前高度值
}
}
)
})
3.jquery 对象和 DOM 原生对象有什么区别?如何转化?
jquery对象是 DOM 原生对象包装后形成的。 Jquery对象有自己特有的方法(对原生 DOM 对象方法的封装)。DOM 原生对象只能用 DOM 对象的方法, Jquery 对象 只能用 Jquery 对象的方法。
- DOM原生对象转jquery对象,只需加上$()
var box=document.getElementsByTagName("div")[0]; //box是DOM对象
var $box=$(box); // $box是jqeury对象
$box.css("color","red") //使用jquery方法
- jquery对象转DOM对象,通过索引或 .get()方法
// $("div")是jquery对象,是所有div的合集
var box=$("div")[0] //方法一:,box是DOM对象
var box=$("div").get(0) //方法二:box是DOM对象
box.style.color="red"; //使用DOM对象的方法
4.jquery中如何绑定事件?bind、unbind、delegate、live、on、off都有什么作用?推荐使用哪种?使用on绑定事件使用事件代理的写法?
绑定事件的方法有.bind()、.live()、.delegate() 和 .on(),
对应的解除绑定的方法分别是 .unbind()、.die()、.undelegate() 和 .off()。
- bind( ):为一个元素绑定一个事件处理程序,在jQuery3.0版本中,已被标记为弃用。
$( ele ).bind( "click", function( e ) {} );
//相当于下面on( )的写法
$( ele ).on( "click", function( e ) {} );
- unbind( ):用来解除bind绑定的事件。同样在jQuery3.0版本中,标记为弃用
$(ele).unbind();
- live( ): 事件代理机制,委托给$(document)
$( "ele" ).live( "click", function( e ) {} );
//相当于下面on( )的写法
$( document ).on( "click", "ele", function( e ) {} );
- delegate( ), 事件代理机制,委托给$( "#members" )
$( "#members" ).delegate( "li a", "click", function( e ) {} );
//相当于下面on( )的写法
$( "#members" ).on( "click", "li a", function( e ) {} );
- on( )
语法:$ele.on(event [,selector] [,data] ,handler(obj))
,方括号内为可选参数。
$("ele").on("click", "li", {name:"candy"}, function(e){
console.log(e.target.textContent) //打印出所点击的li标签中的内容
console.log("hello" + event.data.name) // hello candy
})
- off( ) 删除绑定的事件
$("ele").off("click", "mouseup") //删除绑定在元素上的click和mouseup事件
$("ele").off() //删除绑定在元素上的所有事件
5.jquery 如何展示/隐藏元素?
- 展示: .show()
语法:$(selector).show(speed,callback)
;
speed:可选参数,规定元素从隐藏到完全可见的速度,默认为0,也可写fast(200ms)或slow(600ms)。
callback:show函数执行完之后,要执行的函数。本质上show方法是修改元素的display为block。
$('#btn').on('click', function() {
$('.div1').show("slow",function(){
alert("动画结束")
});
});
- 隐藏: .hide()
语法:$(selector).show(speed,callback)
;
speed:可选参数,规定元素从可见到完全隐藏的速度,默认为0,也可写fast(200ms)或slow(600ms)。
callback:hide函数执行完之后,要执行的函数。本质上hide方法是修改元素的display为block。
$('#btn').on('click', function() {
$('.div1').hide(3000,function(){
alert("动画结束")
});
});
6.jquery 动画如何使用?
语法:语法:$(selector).animate({params} [,speed] [,callback]);
$("#btn").on("click",function(){
$(".div1").animate({
width:"100px",
height:"100px",
left:"50px"//向左移动50px ,(前提是设置过定位,css中也能实现移动)
},5000)
.animate({ },3000);
.animate({ });
});
7.如何设置和获取元素内部 HTML 内容?如何设置和获取元素内部文本?
- 用html()方法可以设置和获取元素内部HTML内容。
需要注意的是,.html()
获取的是匹配元素集合中第一个元素的Html内容(包括html标签),.html(string)
设置的是匹配元素集合中每个元素的html内容。 - 用text()方法可以设置和获取元素内部文本内容。
需要注意的是,.text()
获取的是匹配元素集合中每个元素的(包括它们的后代)文本的合并,text(string)
设置的是匹配元素集合中每个元素的文本。
<div>AA
<p>BB
<span>CC</span>
</p>
</div>
<div>aa
<p>bb
<span>cc</span>
</p>
</div>
<script >
$("div").html() // 返回的是第一个div中的html,"AA<p>BB<span>CC</span></p>"
$("div").text() //返回的是两个div(包括它们的后代)的文本的合集,"AABBCCaabbcc"
$("div").html("<span>hh</span>") //[<div><span>hh</span></div>, <div><span>hh</span></div>]
$("div").text("kk") //[<div>kk</div>, <div>kk</div>]
</script>
8.如何设置和获取表单用户输入或者选择的内容?如何设置和获取元素属性?
- 通过val()方法可以设置和获取表单用户输入或者选择的内容
需要注意的是,获取的的是匹配元素集合中第一个元素的当前值,设置的是匹配元素集合中每个元素的值
$('input').val(); //获取所有匹配的input集合中的第一个input的value值
$('input').val('饥人谷'); //设置所有input的value值为“饥人谷”
- 通过attr() 方法可以设置或返回元素的属性。
$('img').attr('src'); //获取所有匹配的input集合中的第一个img的src
/$('img').attr('src','http://'); //设置所有img的src