您的位置:首页 > Web前端 > JQuery

jQuery中事件加载 DOM—@ready中调用其他方法,会提示缺少对象的错误

2013-04-11 22:45 701 查看
一、CSS-DOM 操作

获取和设置元素的样式属性: css()

获取和设置元素透明度: opacity 属性(css 的一个属性)

获取和设置元素高度, 宽度: height(), width(). 在设置值时, 若只传递数字, 则默认单位是 px. 如需要使用其他单位则需传递一个字符串, 例如 $(“p:first”).height(“2em”);

获取元素在当前视窗中的相对位移: offset(). 其返回对象包含了两个属性: top, left. 该方法只对可见元素有效

二、jQuery 中的事件 -- 加载 DOM

在页面加载完毕后, 浏览器会通过 JavaScript 为 DOM 元素添加事件. 在常规的 JavaScript 代码中, 通常使用 window.onload 方法, 在 jQuery 中使用$(document).ready() 方法.



三、事件绑定

[html]
view plaincopyprint?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>demo05.html</title>

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

<script type="text/javascript" src="../js/jquery-1.9.1.js"></script>

<script type="text/javascript">
$(document).ready(function(){
$("#content").hide();

$("#hd").bind("click",function(){
if($("#content").is(":hidden")){
$("#content").show("slow");
}else{
$("#content").hide();
}

//$("#content").toggle();

});

/* $("#hd").hover(function(){
$("#content").show("slow");
},function(){
$("#content").hide();
}); */


/* $("#hd").hide();
$("#hd").toggle(function(){
$("#content").show("slow");
},function(){
$("#content").hide();
}); */

/* $("#hi").bind("click",function(){
alert("傻瓜");

return false;
}); */

});

</script>

</head>

<body>
<div id="panl">
<h5 id="hd" style="height: 30px; width: 160px; background-color: fuchsia;" >什么是jQuery?</h5>
</div>
<div id="content">
Jquery是继prototype之后又一个优秀的Javascrīpt框架。它是轻量级的js库(压缩后只有21k)
,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera
9.0+)。jQuery使用户能更方便地处理HTML
documents、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。


</div>


<div>
<a href="#" id="hi" style="height: 30px; width: 160px; background-color: fuchsia;">hello</a>
</div>

</body>
</html>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>demo05.html</title>

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

<script type="text/javascript" src="../js/jquery-1.9.1.js"></script>

<script type="text/javascript">
	$(document).ready(function(){
		$("#content").hide();
		
		$("#hd").bind("click",function(){
			if($("#content").is(":hidden")){
				$("#content").show("slow");
			}else{
				$("#content").hide();
			} 
			
			//$("#content").toggle();
			
		});
		
		/* $("#hd").hover(function(){
			$("#content").show("slow");
		},function(){
			$("#content").hide();
		}); */
		
		
		/* $("#hd").hide();
		 $("#hd").toggle(function(){
			$("#content").show("slow");
		},function(){
			$("#content").hide();
		});  */
		
		/* $("#hi").bind("click",function(){
			alert("傻瓜");
			
			return false;
		}); */
		
	});
	
</script>

</head>

<body>
	<div id="panl">
		<h5 id="hd" style="height: 30px; width: 160px; background-color: fuchsia;" >什么是jQuery?</h5>
	</div>
	<div id="content">
		Jquery是继prototype之后又一个优秀的Javascrīpt框架。它是轻量级的js库(压缩后只有21k)
		,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera
		9.0+)。jQuery使用户能更方便地处理HTML
		documents、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。

	</div>
	
	
	<div>
		<a href="#" id="hi" style="height: 30px; width: 160px; background-color: fuchsia;">hello</a>
	</div>
	
</body>
</html>




四、合成事件

hover(): 模拟光标悬停事件. 当光标移动到元素上时, 会触发指定的第一个函数, 当光标移出这个元素时, 会触发指定的第二个函数.

toggle(): 用于模拟鼠标连续单击事件. 第一次单击元素, 触发指定的第一个函数, 当再一次单击同一个元素时, 则触发指定的第二个函数, 如果有更多个函数, 则依次触发, 直到最后一个.

toggle() 的另一个作用: 切换元素的可见状态.

五、事件冒泡

事件会按照 DOM 层次结构像水泡一样不断向上只止顶端

解决: 在事件处理函数中返回 false, 会对事件停止冒泡. 还可以停止元素的默认行为.

六、事件对象的属性

事件对象: 当触发事件时, 事件对象就被创建了. 在程序中使用事件只需要为函数添加一个参数. 该事件对象只有事件处理函数才能访问到. 事件处理函数执行完毕后, 事件对象就被销毁了.

event.pageX, event.pageY: 获取到光标相对于页面的 x, y 坐标.

七、移除事件

移除某按钮上的所有 click 事件: $(“btn”).unbind(“click”)

移除某按钮上的所有事件: $(“btn”).unbind();

one(): 该方法可以为元素绑定处理函数. 当处理函数触发一次后, 立即被删除. 即在每个对象上, 事件处理函数只会被执行一次.

八、jQuery 中的动画: 隐藏和显示

hide(): 在 HTML 文档中, 为一个元素调用 hide() 方法会将该元素的 display 样式改为 none. 代码功能同 css(“display”, “none”);

show(): 将元素的 display 样式改为先前的显示状态.

以上两个方法在不带任何参数的情况下, 作用是立即隐藏或显示匹配的元素, 不会有任何动画. 可以通过制定速度参数使元素动起来.

以上两个方法会同时减少(增大)内容的高度, 宽度和不透明度.

fadeIn(), fadeOut(): 只改变元素的透明度. fadeOut() 会在指定的一段时间内降低元素的不透明度, 直到元素完全消失. fadeIn() 则相反.

slideDown(), slideUp(): 只会改变元素的高度. 如果一个元素的 display 属性为 none, 当调用 slideDown() 方法时, 这个元素将由上至下延伸显示. slideUp() 方法正好相反, 元素由下至上缩短隐藏.

toggle(): 切换元素的可见状态: 如果元素时可见的, 则切换为隐藏; 如果元素时隐藏的, 则切换为可见的.

slideToggle(): 通过高度变化来切换匹配元素的可见性.

fadeTo(): 把不透明度以渐近的方式调整到指定的值(0 – 1 之间).





直接在ready中调用其他方法,会提示缺少对象的错误,解决方法如下:
方法1.应用jQuery的扩展可以解决这个问题。

$(document).ready(function(){
$.extend({

show:function(){

alert("ready");

}

});

setInterval("show()",3000);

});

方法2.指定定时执行的函数时不要使用引号和括号。

$(function(){

function show(){

alert("ready");

}

setInterval(show,3000);// 注意函数名没有引号和括弧!
// 使用setInterval("show()",3000);会报“缺少对象”
});

区别:
setTimeout()
   从载入后延迟指定的时间去执行一个表达式或者是函数;
仅执行一次 ;和window.clearTimeout一起使用.
setInterval()
   在执行时,它从载入页面后每隔指定的时间执行 一个表达式或者是函数;(功能类似于递归函数);和window.clearInterval一起使用.
补充说明:
这两个方法都可以用来实现在一个固定 时间段之后去执行JavaScript。不过两者各有各的应用场景。
方 法
实际上,setTimeout和 setInterval的语法相同。它们都有两个参数,一个是将要执行的代码字符串,还有一个是 以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码。
不过这两个函数还是有区别的, setInterval在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代 码,而setTimeout只执行一次那段代码。
虽然表面上看来setTimeout只能应用在on-off方式的动作上,不过可以通 过创建一个函数循环重复调用setTimeout,以实现重复的操作:
showTime();
function showTime()
{
var today = new Date();
alert("The time is: " + today.toString ());
setTimeout("showTime()", 5000);
}
一旦调 用了这个函数,那么就会每隔5秒钟就显示一次时间。如果使用setInterval,则相应的代 码如下所示:
setInterval ("showTime()", 5000);
function showTime()
{
var today = new Date();
alert("The time is: " + today.toString ());
}
这两种方法可能看起来非常像,而且显 示的结果也会很相似,不过两者的最大区别就是,setTimeout方法不会每隔5秒钟就执行一 次showTime函数,它是在每次调用setTimeout后过5秒钟再去执行showTime函数。这意味着 如果showTime函数的主体部分需要2秒钟执行完,那么整个函数则要每7秒钟才执行一次。 而setInterval却没有被自己所调用的函数所束缚,它只是简单地每隔一定时间就重复执行
一次那个函数。
如果要求在 每隔一个固定的时间间隔后就精确地执行某动作,那么最好使用setInterval,而如果不想 由于连续调用产生互相干扰的问题,尤其是每次函数的调用需要繁重的计算以及很长的处 理时间,那么最好使用setTimeout。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐