作者TonyQ (^^)
看板Ajax
标题Re: [问题] 初学Jquery的几点问题
时间Tue Dec 1 23:01:57 2009
※ 引述《averywu (我是阿Q )》之铭言:
: 好吧,我才刚摸这个二天。
: 学着的过程中,有几点不懂。不知道有没有人可以指点一下这麽初级
: 的问题。
: <script type="text/javascript" src="jquery-1.3.2.min.js"></script>
: <script language = "javascript">
: $("a#open").click(function() {
: $("#menu").show();
: return false;
: });
: </script>
: <style type="text/css">
: #menu {display: none}
: </style>
: <a id="open" href="#">控制面板</a>
: <ul id="menu">
: <li><a href="#1">控制面板首页</a></li>
: <li><a href="#2">编辑个人资料</a></li>
: <li><a href="#3">个人空间管理</a></li>
: </ul>
: 这是我直接从教学网站上拉下来的,可是在我的环境下完全不动作。
: 在对方的站上是有效果的。
: jquery确定有载入。是什麽问题呢?(我的档就上面几行,还是要完整的html才能
: 作用?)
时间点不对 , 以一般的状况下是先读到先执行 ,
除非放 ready 那又是另一回事.
简单来说 执行$("a#open") 的时候 , 你的dom 根本就还没有open这个元素 ,
你把script tag 拉到ul下面应该就会有效果了.
(不过一般来说基本的页面还是尽量拥有完整得结构比较好.)
: $("form").submit(function() {
: if ($("input#username").val() == "")
: $("span.help").show();
: });
: 这段里,submit(後有加function()
: $("#body").css({
: border: "1px solid green",
: height: "40px"
: });
: 这段里,css後面没加function()
: $("a[target]").append(" (Opens in New Window)");
: 这段里不止没加function,连大括号都不见了。
: 大括号及function()适用时机为何呢?
: 问的很肤浅,请见谅。
你要先了解 {} 跟 function(){} 所代表的意义 ,
前者是一种物件 , 如果你有学过其它语言或者是资料结构 ,
他的角色有点像 map .
var k={atr1:'hi', atr2:'hi2'};
alert(k.atr1); // 'hi'
alert(k.atr2); // 'hi2'
k.atr1="hello";
alert(k.atr1); // 'hello'
至於 function (){} 这东西比较抽象 , 他是个匿名函式 ,
在 js 里面是可以把 function 当成一种物件的 ,
也就是说可以有类似这样的事情发生
----------------------------------------------------------
function ok(){ alert('hi');}
function ok_2(fn){
fn(); //执行fn
}
ok_2(ok);
----------------------------------------------------------
把ok丢进ok_2当param ,
结果 ok_2 执行了 ok , 得到了 'hi'
在这里 ok跟 ok_2 都是一个具名函式 . 也可以写成
var ok =function(){
alert('hi');
};
这段话代表的意义是
将 function(){alert('hi);}这个匿名函式指定给 ok 这个变数名称.
----------------------------------------------------------
回到原本的主题 , click(fn) 是说当我按下这个物件时 ,
触发click这个事件後 , 去执行我们所设定的函数 (fn ),
所以这边我们通常会直接写一个匿名函式 ,
如果你不嫌麻烦 要写成
var hello=function(){
alert("hi");
}
jqXXX.click(hello);
或者是
function hello(){
alert("hi");
}
jqXXX.click(hello);
这都是ok的
都等同於
jqXXX.click(function{alert('hi');});
至於 css , 他能接受的有两种形式.
一个是 xxx.css("styleName","value");
另一个是 xxx.css({styleName1:'value1',styleName2:'value2'});
前者就跟写css很像 , 一行一个属性没啥好说的.
如果是後者 , 他会去遍历这个 object 中的所有属性(attribute ) ,
用这些属性来做设定 .
同样的 ,
var obj={styleName1:'value1',styleName2:'value2'};
xxx.css(obj);
这样写的意思也是一样的..
{} or function(){} 有结构上的不同, 但是你的问题都不是在这两者 ,
而是你没有弄懂 css / click 这两个函数的差别 ,
还有他们所需要的参数(parameter) .
因为他们需要接受的参数本来就不一样 , 所以你当然很难找出一个规则.
建议你可以先试着看看 jQuery的doc .
--
I am a person, and I am always thinking .
Thinking in love , Thinking in life ,
Thinking in why , Thinking in worth.
I can't believe any of what ,
I am just thinking then thinking ,
but worst of all , most of mine is thinking not actioning...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.224.105.141
1F:推 averywu:太详细了,感谢赐教! 12/01 23:14