问题:
asp.net MVC中控件值的保存可以使用默认的方式让系统自动保存
只要控件的ID/Name名与数据库中的字段名一致即可!此时不需要手动保存。
否则,要通过FormCollection collection
来重新获取它值,如下:
FormCollection collection
purchaseapply.PaymentTypeId = int.Parse(collection["PaymentTypeId"]);
问题:
如何获取<select></select>的text值
var checkText=$("#select_id").find("option:selected").text(); //获取Select选择的Text
问题:
显示message的时候发现导致布局很难看,显示在一边?
<div id="poststuff" class="metabox-holder has-right-sidebar">
<div id="side-info-column" class="inner-sidebar">
<div class="meta-box-sortables ui-sortable">
<div class="message" style="color:red"></div>
</div>
</div>
</div>
问题:
如何清空select的option值?
使用jquery如何操作select(下拉框)呢?主要讲下怎么动态添加option 动态选择option,假如我们的select 控件的 id 属性为 sel
jquery 清空option $("#sel").empty();
也可以使用:
$("#sel").html(“”);
问题:
怎么引入jquery?
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
简便方法:
把文件Scripts/jquery-1.4.1.js用鼠标拖入html文件的代码编辑区。
问题:
jquery中的ready函数与window.onload谁先执行
关于$(document).ready():
jquery中的$(document).ready(),那$(document).ready()到底是什么作用呢?是不是可以用window.onload = function(){ ... }来实现呢?
这里,我们要明确二者之间的区别。
我们使用window.onload = function(){ ... },是希望在页面被载入时执行function中的处理,但是这些JS代码只有在页面上的全部内容加载完成(包括头部的banner广告,所有图片)的时候才会执行。将window.onload放在最上边的原因就是当你第一次运行codes的时候,HTML'document'还没有加载完成。
而$(document).ready()却不需要载入得这么“完全”。$(document).ready()是在DOM结构载入完后执行的,而 window.onload是得在所有文件都加载完后执行的,注意区别,一个是DOM加载完,一个是所有文件加载完。因此,ready肯定在onload 之前发生,页面加载大或者多的图片而使onload执行延后,使用jquery的ready可缓解此问题。
我们应该紧记,jquery的ready是指在页面的DOM模型加载完后执行指定的函数。之所以经常用$(document).ready()来取代 window.onload,就是因为它是在dom模型加载完成后就执行,而window.onload是在dom元素加载完全后才执行。
B.关于document.onload和window.onload:
document.onload和window.onload没有本质的区别,都是指页面载入完成后执行指定函数。
做一个比较吧:
window .onload =function (){alert ("welcome");}
$(document).ready(
function (){
alert ("thanks for visiting!");
}
);
运行后你会发现 $(document).ready()先执行。
问题:
Description: If this method is called, the default action of the event will not be triggered.
For example, clicked anchors will not take the browser to a new URL. We can useevent.isDefaultPrevented()
to determine if this method has been called by an event handler that was triggered by this event.
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<a href="http://jquery.com">default click action is prevented</a>
<div id="log"></div>
<script>
$("a").click(function(event) {
event.preventDefault();
$('<div/>')
.append('default ' + event.type + ' prevented')
.appendTo('#log');
});
</script>
</body>
</html>
问题:
我们另一种常常做的事情,便是增加(或者删除)一个css样式。
首先我们在<head>标签内增加一些样式:
1. <style>
2. a.test { font-weight: bold; }
3. </style>
然后在代码内使用addClass方法
1. $("a").addClass("test");
所有超链接会被加粗。
要删除此样式,只需要使用 remove class方法。 (允许添加多个样式到html)
1. $("a").removeClass("test");
问题:
特效
jQuery提供了一组特效,使用这些特效可以让你的网站脱颖而出,你只需要将上面的测试文件添加如下代码就可以进行测试:
1. $("a").click(function(event){
2. event.preventDefault();
3. $(this).hide("slow");
4. });
问题:
函数回调?
回调函数
回调函数是指父方法运行通过后传递参数并且进行调用的函数。回调函数的特殊之处在父函数可以在回调函数运行之前运行。另一个重要的点是要知道如何正确的传递回调。这也是我常常忘记的正确语法。
无参数回调
你可以使用下面的代码来设定回调参数。
1. $.get('myhtmlpage.html', myCallBack);
注意 第二个参数只包含回调函数的名字(不是字符串并且不包含括号对). Javascript的函数可以像参数一样传递,并且在后面的代码执行。
包含参数的回调
你可能会这样问,"如果包含参数,你会怎么做?"。
错误的方式
错误的调用方式(不会被执行)
1. $.get('myhtmlpage.html', myCallBack(param1, param2));
这种方式并不会被调用,因为它调用了
1. myCallBack(param1, param2)
它的执行结果会被作为第二个参数传递给$get()函数
正确的方式
上面的方式问题在于 myCallBack在作为函数传递之前先被进行了评估。Javascrip和的jQuery 将函数扩展为函数指针,例如IE的设定Timeout函数。
下面的方法,创建了一个匿名函数并且注册了回调函数。注意这里使用了function(){}匿名函数只做了一件事情,使用两个参数param1,param2调用myCallBack方法。
1. $.get('myhtmlpage.html', function(){
2. myCallBack(param1, param2);
3. });
param1和param2是$get()方法获取页面完成后提供的参数。
问题:
如何做一个弹出层?
做web程序经常要使用弹出层, 比如单击文字或按钮显示一段提示文字等. 假设有如下需求:
◆ 单击图中的"显示提示文字"按钮, 在按钮的下方显示一个弹出层.
◆ 单击任何空白区域或者弹出层,弹出层消失.
用原始javascript我们也完全可以完成这个工作. 有以下几点注意事项:
1. 弹出层的位置需要动态计算. 因为触发弹出事件的对象可能出现在页面的任何位置, 比如截图中的位置.
2. 为document绑定单击是关闭弹出层的函数, 要使用多播委托, 否则可能冲掉其他人在document绑定的函数.
3. 为document绑定了关闭函数后, 需要在显示函数中取消事件冒泡, 否则弹出层将显示后立刻关闭.
用jQuery, 我们可以轻松地实现此实例:
1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2. <html xmlns="http://www.w3.org/1999/xhtml">
3. <head>
4. <title>jQuery - Start Animation</title>
5.
6. <script type="text/javascript" src="../scripts/jquery-1.3.2-vsdoc2.js" ></script>
7.
8. <script type="text/javascript">
9. $(document).ready(function()
10. {
11. //动画速度
12. varspeed = 500;
13.
14. //绑定事件处理
15. $("#btnShow").click(function(event)
16. {
17. //取消事件冒泡
18. event.stopPropagation();
19. //设置弹出层位置
20. varoffset = $(event.target).offset();
21. $("#divPop").css({ top: offset.top + $(event.target).height() + "px", left: offset.left });
22. //动画显示
23. $("#divPop").show(speed);
24.
25. });
26. //单击空白区域隐藏弹出层
27. $(document).click(function(event) { $("#divPop").hide(speed) });
28. //单击弹出层则自身隐藏
29. $("#divPop").click(function(event) { $("#divPop").hide(speed) });
30. });
31. </script>
32.
33. </head>
34. <body>
35. <div>
36. <br /><br /><br />
37. <button id="btnShow">显示提示文字</button>
38. </div>
39.
40. <!-- 弹出层 -->
41. <div id="divPop" style="background-color: #f0f0f0; border: solid 1px #000000; position: absolute; display:none;
42. width: 300px; height: 100px;">
43. <div style="text-align: center;" >弹出层</div>
44. </div>
45. </body>
46. </html>
47.
问题:
jQuery的动画函数主要分为三类:
1. 基本动画函数: 既有透明度渐变, 又有滑动效果. 是最常用的动画效果函数.
2. 滑动动画函数: 仅使用滑动渐变效果.
3. 淡入淡出动画函数: 仅使用透明度渐变效果.
问题:
下面是jQuery的基本动画函数:
基本动画函数 Basics
名称 |
说明 |
举例 |
show( ) |
显示隐藏的匹配元素。 这个就是 'show( speed, [callback] )' 无动画的版本。如果选择的元素是可见的,这个方法将不会改变任何东西。无论这个元素是通过hide()方法隐藏的还是在CSS里设置了display:none;,这个方法都将有效。 |
显示所有段落: |
show( speed, [callback]) |
以优雅的动画显示所有匹配的元素,并在显示完成后可选地触发一个回调函数。 可以根据指定的速度动态地改变每个匹配元素的高度、宽度和不透明度。在jQuery 1.3中,padding和margin也会有动画,效果更流畅。 |
用缓慢的动画将隐藏的段落显示出来,历时600毫秒: |
hide( ) |
隐藏显示的元素 这个就是 'hide( speed, [callback] )' 的无动画版。如果选择的元素是隐藏的,这个方法将不会改变任何东西。 |
隐藏所有段落: |
hide( speed, [callback] ) |
以优雅的动画隐藏所有匹配的元素,并在显示完成后可选地触发一个回调函数。 可以根据指定的速度动态地改变每个匹配元素的高度、宽度和不透明度。在jQuery 1.3中,padding和margin也会有动画,效果更流畅。 |
用600毫秒的时间将段落缓慢的隐藏: |
toggle( ) |
切换元素的可见状态。 如果元素是可见的,切换为隐藏的;如果元素是隐藏的,切换为可见的。 |
切换所有段落的可见状态: |
toggle( switch ) |
根据switch参数切换元素的可见状态(ture为可见,false为隐藏)。 如果switch设为true,则调用show()方法来显示匹配的元素,如果switch设为false则调用hide()来隐藏元素。 |
切换所有段落的可见状态: |
toggle( speed, [callback] ) |
以优雅的动画切换所有匹配的元素,并在显示完成后可选地触发一个回调函数。 可以根据指定的速度动态地改变每个匹配元素的高度、宽度和不透明度。在jQuery 1.3中,padding和margin也会有动画,效果更流畅。 |
用200毫秒将段落迅速切换显示状态,之后弹出一个对话框: |
问题:
淡入淡出函数 Fading
名称 |
说明 |
举例 |
fadeIn( speed, [callback] ) |
通过不透明度的变化来实现所有匹配元素的淡入效果,并在动画完成后可选地触发一个回调函数。 这个动画只调整元素的不透明度,也就是说所有匹配的元素的高度和宽度不会发生变化。 |
用600毫秒缓慢的将段落淡入: |
fadeOut( speed, [callback] ) |
通过不透明度的变化来实现所有匹配元素的淡出效果,并在动画完成后可选地触发一个回调函数。 |
用600毫秒缓慢的将段落淡出: |
fadeTo(speed, opacity, [callback]) |
把所有匹配元素的不透明度以渐进方式调整到指定的不透明度,并在动画完成后可选地触发一个回调函数。 |
用600毫秒缓慢的将段落的透明度调整到0.66,大约2/3的可见度: |
问题:
需要特别讲解的是fadeTo函数. 这个函数能让对象渐变到指定的透明度上. opacity参数取值从0-1, 比如0.6表示透明度为60%.
和fadeIn与fadeOut不同的是, fadeTo函数只改变对象的透明度, 即使透明度为0对象仍然占位. 而fadeIn和fadeOut最后一定会改变对象的display属性, fadeOut后对象将从页面上消失(不占位), 但是fadeTo仅仅是让其透明(占位).
问题:
自定义动画函数 Custom
名称 |
说明 |
举例 |
animate( params, [duration], [easing], [callback] ) |
用于创建自定义动画的函数。 这个函数的关键在于指定动画形式及结果样式属性对象。这个对象中每个属性都表示一个可以变化的样式属性(如“height”、“top”或“opacity”)。注意:所有指定的属性必须用骆驼形式,比如用marginLeft代替margin-left. 而每个属性的值表示这个样式属性到多少时动画结束。如果是一个数值,样式属性就会从当前的值渐变到指定的值。如果使用的是“hide”、“show”或“toggle”这样的字符串值,则会为该属性调用默认的动画形式。 在 jQuery 1.2 中,你可以使用 em 和 % 单位。另外,在 jQuery 1.2 中,你可以通过在属性值前面指定 "+=" 或 "-=" 来让元素做相对运动。 jQuery 1.3中,如果duration设为0则直接完成动画。而在以前版本中则会执行默认动画。 |
点击按钮后div元素的几个不同属性一同变化: |
animate( params, options ) |
用于创建自定义动画的函数。 这个函数的关键在于指定动画形式及结果样式属性对象。这个对象中每个属性都表示一个可以变化的样式属性(如“height”、“top”或“opacity”)。注意:所有指定的属性必须用骆驼形式,比如用marginLeft代替margin-left. 而每个属性的值表示这个样式属性到多少时动画结束。如果是一个数值,样式属性就会从当前的值渐变到指定的值。如果使用的是“hide”、“show”或“toggle”这样的字符串值,则会为该属性调用默认的动画形式。 在 jQuery 1.2 中,你可以使用 em 和 % 单位。另外,在 jQuery 1.2 中,你可以通过在属性值前面指定 "+=" 或 "-=" 来让元素做相对运动。 |
第一个按钮按了之后展示了不在队列中的动画。在div扩展到90%的同时也在增加字体,一旦字体改变完毕后,边框的动画才开始: $("#go1").click(function(){ $("#block1").animate( { width: "90%"}, { queue: false, duration: 5000 } ) .animate( { fontSize: '10em' } , 1000 ) .animate( { borderWidth: 5 }, 1000); }); $("#go2").click(function(){ $("#block2").animate( { width: "90%"}, 1000 ) .animate( { fontSize: '10em' } , 1000 ) .animate( { borderWidth: 5 }, 1000); }); |
stop( [clearQueue], [gotoEnd] ) |
停止所有在指定元素上正在运行的动画。 如果队列中有等待执行的动画(并且clearQueue没有设为true),他们将被马上执行 clearQueue(Boolean):如果设置成true,则清空队列。可以立即结束动画。 gotoEnd (Boolean):让当前正在执行的动画立即完成,并且重设show和hide的原始样式,调用回调函数等。 |
点击Go之后开始动画,点Stop之后会在当前位置停下来: // 开始动画 // 当点击按钮后停止动画 |
问题:
自定义坠落动画:
这个示例让一个图层从屏幕最上方掉落到最下方, 并且消失.
1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2. <html xmlns="http://www.w3.org/1999/xhtml">
3. <head>
4. <title>jQuery Animation - fadeTo </title>
5.
6. <script type="text/javascript" src="../scripts/jquery-1.3.2.js"></script>
7.
8. <script type="text/javascript">
9. $(document).ready(function()
10. {
11. $("#divPop")
12. .animate(
13. {
14. "opacity": "hide",
15. "top": $(window).height() - $("#divPop").height() - $("#divPop").position().top
16. },
17. 600,
18. function() { $("#divPop").hide(); }
19. );
20. });
21. </script>
22.
23. </head>
24. <body>
25. <div id="divPop" style="background-color: #f0f0f0; border: solid 1px #000000;
26. width: 300px; height: 100px; position:absolute;">
27. <div style="text-align: center;">弹出层</div>
28. </div>
29. </body>
30. </html>
问题:
全局控制属性
最后讲一下和动画相关的属性:
名称:jQuery.fx.off
返回值:Boolean
说明:
关闭页面上所有的动画。
讲解:
把这个属性设置为true可以立即关闭所有动画(所有效果会立即执行完毕)。有些情况下可能需要这样,比如:
* 你在配置比较低的电脑上使用jQuery。
* 你的一些用户由于动画效果而遇到了 可访问性问题
当把这个属性设成false之后,可以重新开启所有动画。
比如下面的代码会执行一个禁用的动画:
1. jQuery.fx.off = true;
2. $("#divPop").show(1000);
虽然使用了动画效果的show函数, 但是因为关闭了所有动画, 所以div会立刻显示出来而没有渐变效果.
问题:
在C#里我们使用new关键字创建对象, 在javascript中也可以使用new关键字:
1. var objectA = new Object();
但是实际上"new"可以省略:
1. var objectA = Object();
但是我建议为了保持语法一直, 总是带着new关键字声明一个对象.
问题:
创建属性并赋值
在javascript中属性不需要声明, 在赋值时即自动创建:
1. objectA.name = "my name";
访问属性
一般我们使用"."来分层次的访问对象的属性:
1. alert(objectA.name);
问题:
嵌套属性
对象的属性同样可以是任何javascript对象:
1. var objectB = objectA;
2. objectB.other = objectA;
3. //此时下面三个值相当, 并且改变其中任何一个值其余两个值都改变
4. objectA.name;
5. objectB.name;
6. objectB.other.name;
使用索引
如果objectA上有一个属性名称为"school.college", 那么我们没法通过"."访问,因为"objectA.school.college"语句是指寻找objectA的school属性对象的college属性.
这种情况我们需要通过索引设置和访问属性:
1. objectA["school.college"] = "BITI";
2. alert(objectA["school.college"]);
下面几个语句是等效的:
1. objectA["school.college"] = "BITI";
2. var key = "school.college"
3. alert(objectA["school.college"]);
4. alert(objectA["school" + "." + "college"]);
5. alert(objectA[key]);
问题:
JSON 格式语法
JSON是指Javascript Object Notation, 即Javascript对象表示法.
我们可以用下面的语句声明一个对象,同时创建属性:
1. //JSON
2. var objectA = {
3. name: "myName",
4. age: 19,
5. school:
6. {
7. college: "大学",
8. "high school": "高中"
9. },
10. like:["睡觉","C#","还是睡觉"]
11. }
JSON的语法格式是使用"{"和"}"表示一个对象, 使用"属性名称:值"的格式来创建属性, 多个属性用","隔开.
上例中school属性又是一个对象. like属性是一个数组. 使用JSON格式的字符串创建完对象后, 就可以用"."或者索引的形式访问属性:
1. objectA.school["high school"];
2. objectA.like[1];
问题:
静态方法与实例方法
静态方法是指不需要声明类的实例就可以使用的方法.
实例方法是指必须要先使用"new"关键字声明一个类的实例, 然后才可以通过此实例访问的方法.
1. function staticClass() { }; //声明一个类
2. staticClass.staticMethod = function() { alert("static method") }; //创建一个静态方法
3. staticClass.prototype.instanceMethod = function() { "instance method" }; //创建一个实例方法
上面首先声明了一个类staticClass, 接着为其添加了一个静态方法staticMethod 和一个动态方法instanceMethod. 区别就在于添加动态方法要使用prototype原型属性.
对于静态方法可以直接调用:
1. staticClass.staticMethod();
但是动态方法不能直接调用:
1. staticClass.instanceMethod(); //语句错误, 无法运行.
需要首先实例化后才能调用:
1. var instance = new staticClass();//首先实例化
2. instance.instanceMethod(); //在实例上可以调用实例方法
问题:
全局对象是window属性
通常我们在
然而我们还应该知道, 实际上全局变量objectA是创建在window对象上, 可以通过window对象访问到:
1. window.objectA
问题:
函数究竟是什么
我们都知道如何创建一个全局函数以及如何调用:
1. function myMethod()
2. {
3. alert("Hello!");
4. }
5. myMethod();
其实同全局对象一样, 使用function关键字创建的方法(也可以创建类)的名称, 实际上是为window对象创建了myMethod属性, 并且值是一个匿名方法, 上面的语句等同于:
1. window.myMethod = function()
2. {
3. alert("Hello!");
4. }
无论使用哪种方式声明, 实际保存时都是使用函数名创建window对象的属性. 并且值只有函数体没有函数名称.
所以,下面三种声明方式是等效的:
1. function myMethod()
2. {
3. alert("Hello!");
4. }
5. window.myMethod = function()
6. {
7. alert("Hello!");
8. }
9. myMethod = function()
10. {
11. alert("Hello!");
12. }
问题: