jQuery练习-JavaScript事件与事件对象
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="SpringDemo.WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>JavaScript事件与事件对象</title> <style type="text/css"> .outer { background-color: Red; } .inner { background-color: Green; } </style> <script src="JS/jquery-1.7.2.min.js" type="text/javascript"></script> <script type="text/javascript" language="javascript"> function showMsg() { alert('Hi!!!'); } //$(function () { //点击之后才会执行 //document.getElementById("div2").onclick = showMsg; //页面加载即执行,点击后却无效了,但是上下调换位置(把上面不带括号的换下来之后)又会执行了。 //document.getElementById("div2").onclick = showMsg(); //}); // $("#div2").bind("click", showMsg); // $("#div2").bind("click", function () { alert('Emmanuel!!!'); }); // $("#div2").bind("click", function (event) { alert("one"); }); // $("#div2").bind("click", function (event) { alert("two"); }); // $("#div2").bind("click", function (event) { $(this).text(); }); // $("#div2").one("click", showMsg); // $("#div2").one("click", function () { alert('Emmanuel!!!'); }); // $("#div2").one("click", function (event) { alert("one"); }); // $("#div2").one("click", function (event) { alert("two"); }); // $("#div2").one("click", function (event) { $(this).text(); }); // $("#div2").click(function (event, a, b) { // }).trigger("click", ["a", "b"]); // function handler(event) { // alert(event.data.foo); // }; // $("#div2").bind("click", { foo: "bar" }, handler); // $("#div2").bind("click", function (event) { alert($(event.target).attr("emmanuel")); }); // $("#div2").bind("click", { emmanuel: "amen" }, function (event) { alert($(event.data.emmanuel)); }); // $("#div2").one("click", { foo: "bar" }, handler); // $("#div2").one("click", function (event) { alert($(event.target).attr("emmanuel")); }); // $("#div2").one("click", { emmanuel: "amen" }, function (event) { alert($(event.data.emmanuel)); }); // $(function () { // $("#old").click(function () { // $("#divResult").html(""); // $("input").trigger("focus"); // }); // $("#new").click(function () { // $("#divResult").html(""); // $("input").triggerHandler("focus"); // }); // $("input").focus(function () { // $("<span>Focused!</span>").appendTo("#divResult"); // }) // $("#old").click(); // $("#old").trigger("click"); //与上面等效 // $("#new").click(); // $("#new").trigger("click"); //与上面等效 // }) // function report(event) { // $("#console").append('<div>' + event.type + '</div>'); // } // $(function () { // $("#outer1").bind("mouseover", report).bind("mouseout", report); // $("#outer2").hover(report, report); // }) // $(function () { // $("li").toggle( // function () { // $(this).css({ "list-style-type": "disc", "color": "red" }); // }, // function () { // $(this).css({ "list-style-type": "square", "color": "yellow" }); // }, // function () { // $(this).css({ "list-style-type": "none", "color": "green" }); // } // ); // }) // $("li").click(function (event) { // alert(event.type); // }); // $("a[href=http://www.zanmeishi.com]").click(function (event) { // alert(event.target.href); // }); // $("a").each(function (i) { // $(this).bind("click", { index: i }, function (e) { // alert('Current Index is:' + e.data.index); // alert('Current Mouse X Position:'+e.pageX+',Current Mouse Y Position:'+e.pageY); // }); // }); // $("#div2").html($.toJson($("form").serializeArray())); // $(function () { // $("div2").bind("click", function (event) { // $.get("../data/AjaxGetMethod.aspx"); // }); // $("div2").ajaxComplete(function (evt, request, settings) { $(this.append("<div>ajaxComplete</div>")) }); // }) //本例你实际希望点击灰色盒子打开google首页,而点击黑色盒子打开baidu首页,但结果你点击灰色盒子的时候,却是同时打开了两个网页。 //其实在实际设计中较少遇到此问题,你可能会想如果我在页面不同DOM深处安置了不同的按钮或链接,深层处的事件触发会不会波及顶层的按钮呢?不会,因为按钮不能形成嵌套关系。 function openWin(url) { window.open(url); } //设置全局默认options对象 $(function () { $.ajaxSetup({ url: "../data/AjaxGetMethod.aspx", data: { "param": "gawking" }, global: false, type: "post", success: function (data) { $("#div2").html(data); } }); //设置弹出层显示和隐藏速度 var speed = 500; $("#spShow").click(function (event) { //取消事件冒泡,以免重复调用 event.stopPropagation(); //获取目标按钮的位移,可便于以下用来取得按钮上端和左端离页面顶端和左端的距离 var offset = $(event.target).offset(); //设置弹出层的显示位置:按钮离页面顶端的高度+按钮本身的高度正好是弹出层的顶端出现位置, //弹出层离页面左边的距离正好等于按钮离左边的距离 $("#divPop").css({ top: offset.top + $(event.target).height() + "px", left: offset.left }); //按设定速度弹出该层,然后弹出消息 $("#divPop").show(speed); //$("#divPop").show(speed, function (event) { alert("hi!Emmanuel!!"); }); $("#divPop").toggle(speed); //$("#divPop").toggle(speed, function (event) { alert("hi!Emmanuel!!"); }); $("#divPop").slideDown(speed); //$("#divPop").slideDown(speed, function (event) { alert("hi!Emmanuel!!"); }); $("#divPop").slideUp(speed); //$("#divPop").slideUp(speed, function (event) { alert("hi!Emmanuel!!"); }); $("#divPop").slideToggle(speed); //$("#divPop").slideToggle(speed, function (event) { alert("hi!Emmanuel!!"); }); $("#divPop").fadeIn(2000); $("#divPop").fadeOut(2000); $("#divPop").show(speed); $("#divPop").fadeTo(2000, 0.66); $("spStop").click(function () { $("#divPop").stop(); }); $("#divPop").animate( { "opacity": "hide", "top": $(window).height() - $("#divPop").height() - $("#divPop").position().top }, 600, function () { $("#divPop").hide(); } ); jQuery.fx.off = true; $("#divPop").show(1000); }); $("#divPop").animate( { "opacity": "hide", "width": $(window).width() - 100, "height": $(window).height() - 100 }, 500 ); //点击空白区域按照设定速度隐藏弹出层 $(document).click(function (event) { $("#divPop").hide(speed); }); //点击弹出层自身隐藏 $("#divPop").click(function (event) { $(this).hide(speed); }); }); /*==========用户自定义方法==========*/ /*==========事件绑定==========*/ $(function () { //静态提示类弹出层 $("span[id^=spanShowTip]").css("cursor", "pointer").click(function (event) { $("*").stop(); event.stopPropagation(); var top = $(event.target).offset().top + 20; var left = $(event.target).offset().left; $("#divTip").dialog("option", "position", [left, top]); $("#divTip").dialog("open"); }); //动态提出类弹出层 $("span[id^=spanShowDataTip]").css("cursor", "pointer").click(function (event) { $("*").stop(); $("#divTip").dialog("close"); event.stopPropagation(); var top = $(event.target).offset().top + 20; var left = $(event.target).offset().left; $("#divTip").html($(event.target).attr("data")); $("#divTip").dialog("option", "position", [left, top]); $("#divTip").dialog("open"); }); //遮罩类弹出层 $("#btnShowIframe").click(function (event) { event.preventDefault(); event.stopPropagation(); $("#divIframe").dialog("open"); }); //单击自身取消冒泡 $("#divTip, #divIframe").bind("click", function (event) { event.stopPropagation(); }); //document对象单击隐藏所有弹出层 $(document).bind("click", function (event) { $("#divTip").dialog("close"); $("#divIframe").dialog("close"); }); }); /*==========加载时执行的语句==========*/ $(function () { //初始化提示类弹出层 $("#divTip").dialog({ show: null, bgiframe: false, autoOpen: false }); //初始化遮罩类弹出层 $("#divIframe").dialog({ show: null, bgiframe: false, autoOpen: false, width: 500, height: 300, draggable: true, resizable: false, modal: true }); }); $("#things1").bind("click.editMode", OtherListener); $(":checkbox:checked:enabled").addClass("ClassName") $("img").each(function (n) { this.alt = "I'm the [" + n + "] img"; }); var ary = new Array(); $("img").each(function () { ary.push(this.alt); }); $("#img1").attr("imgClass"); $("*").attr("title", function (n) { return "I'm the [" + n + "] control!"; }); $("input").attr({ title: "I'm here", value: "3333" }); //筛选以“http://”开头的链接指定到空白页面 $("a[href^='http://']").attr("target", "_blank"); //表单提交过后禁止重复提交,选择器筛选提交控件(比如button)进行禁用 $("form").submit(function () { $(":submit",this).attr("disabled","disabled"); }); //给每行添加样式 function swap() { $("tr").toggleClass("striped"); } $("div.expentable").css("width", function () { return $(this).width() + 20 + "px"; }); $("div.expentable").width(150); $("div.expentable").css("width", "150px"); function report() { $("#div").html( $("#div1").width() + "X" + $("div2").height() ); } //判断第一个段落是否拥有某个样式类 $("p:first").hasClass("expentable"); $("p:first").is(".expentable"); //获取第一个段落的样式类,并按照空格来分割 $("p:first").attr("class").split(" "); //在段落后面追加内容 $("p").append("<h1>追加内容<h1>"); //在段落前面追加内容 $("p").prepend("<h1>追加内容<h1>"); //在样式类为pClass的段落后面追加样式类为aClass的链接; $("p.pClass").append($("a.aClass")); //在样式类为pClass的段落前面追加样式类为aClass的链接; $("p.pClass").prepend($("a.aClass")); //targets的每个段落后追加flower,相当于复制 $("#flower").appendTo("#targets p"); //targets的每个段落前追加flower,相当于复制 $("#flower").prependTo("#targets p"); //targets的第一个段落后追加car,相当于移动 $("#car").appendTo("#targets p:first"); //targets的第一个段落前追加car,相当于移动 $("#car").prependTo("#targets p:first"); //其他还有before,insertBefore,after,insertAfter //在每个段落的图片后面追加一段文字段落 $("<p>I'm here!</p>").insertAfter("p img"); //往一个没有内容的样式类为amen的div里包进一个样式类为aClass的链接 $("a.aClass").wrap("<div class='amen'></div>"); //疑问:不理解为什么有了first,还要[0],是语法使然么? $("a.aClass").wrap($("div:first")[0]); //样式类为dElement的div后追加段落,然后删除这个div元素 $("div.dElement").after("<p>I'm p!</p>").remove(); //封装一个扩展包装集 $.fn.replaceWith(function (html) { return this.after(html).remove(); }); //调用被扩展过的包装集 $("div.dElement").replaceWith("<p>I'm p!</p>"); //克隆所有的图片元素追加到样式类为Photo的fieldset内 $("img").clone().appendTo("fieldset.Photo"); //获取名称为chk的单选按钮的值 $("[name=chk]:checked").val(); //匹配页面中控件值为1或2或3的单选或复选控件,然后选中它们; $("input,select").val(["1", "2", "3"]); //为页面图片元素绑定一个单击事件,弹出消息 $("img").bind("click",function(event) { alert("hi!"); }); //移除页面中的图片元素的单击事件 $("img").unbind("click"); //基数次点击图片imgToggle时改变其透明度为0.4,偶数时为0.6 $(function () { $("#imgToggle").toggle( function (event) { $(event.target).css("opacity", 0.4); }, function (event) { $(event.target).css("opacity", 0.6); }); }); $(":checked").click(function () { var checked = this.checked; $("div", $(this).parents("div:first")).css("display", checked ? "block" : "none"); $("input[type=text]", $(this).parents("div:first")) .attr("disabled", !checked) .css("color", checked ? "black" : "green") .val(1) .change() .each(function () { if (checked) this.focus(); }); }); $(function () { $("button").css("position", "left"); $("#apply").click(function () { $(this).show(); }); }) (function ($) { $.say = function (t) { alert("到了下车!这话他们不明白,意思乃是隐藏的:" + t); } })(jQuery); $(function () { $("#btnTestButton").click(function (event) { var slt = $("#sltTestSubject")[0]; slt.add( new option("2½", "2.5"), $.browser.msie ? 2 : slt.options[2] ); }); }) //就绪处理函数 jQuery(function ($) { alert("Jesus Christ said that:'I'm comming soon!'"); }); var $ = "Emmanuel!"; jQuery(function () { alert("$:" + $); }); jQuery(function ($) { alert("$:" + $); }); $.trim($("#someField").val()); $("#someField").val($.trim($("#someField").val())); //循环读取数组每个元素,然后按照函数处理来输出其值 var noArray = ["1", "2", "3"]; $.each(noArray, function (n, value) { alert(n+":Hi!Emmanuel!"+value); }); var noArray = {one:1,two:2, three:3}; $.each(noArray, function (no, value) { alert(no + ":Hi!Emmanuel!" + value); }); //收集大于1的数字重新组合数组,结果为["2","3"],{two:2,three:3} $.grep(noArray, function (value) { return value <= 1; }, true); //收集大于1的数字重新组合数组,结果为["2","3"],{two:2,three:3} $.map(noArray, function (value) { return value > 1; }, true); //收集是数字的重新组合成数组,结果为["1", "2", "3", "4", "6"] var strings = ["1", "2", "3", "4", "S", "6"]; var values = $.map(strings, function (value) { var no = new Number(values); return isNaN(no) ? null : no; }); //收集按照空格分隔的单个字母元素,重新组合成数组,结果为:["G","o","d","L","o","v","e","s","T","h","e","","W","o","r","l","d"] var strArray = ["God","Loves","The World"]; var string = $.map(strArray, function (value) { return value.split(' '); }); //返回第一个值在第二个值(数组)中出现的索引,结果为1 var index = $.inArray(2, [1, 2, 3, 4, 5]); //收集表单中的图片元素组合成数组 var imgsArray = $.makeArray("img"); //var value = $.unique(DOM数组); var target = { a: 1, b: 2, c: 3 }; var source1 = { c: 4, d: 5, e: 6 }; var source2 = { e: 7, f: 8, g: 9 }; //将source1,source2追加到target后面(相同字母取优先级高的值,后面的覆盖前面的),扩展出一个新的数组 $.extend(target, source1, source2); $(function () { $("#loadButton").click(function () { $.getScript("stuff.js", function () { $("#inspectButton").click(); }); }); $("#inspectButton").click(function () { //.... }); }) //自定义工具函数 (function ($) { $.say(function (value) { alert("I say:"+value); }) })(jQuery); (function ($) { $.fn.makeItBlue = function (value) { return value.css("color","blue"); } })(jQuery); (function ($) { $.fn.setReadOnly = function (readonly) { return this.filter("input.text") .attr("readonly", "readonly") .css("opacity", readonly ? 0.5 : 1.0); } })(jQuery); $(function () { $("#divPhoto img").photomatic({ photoElement: "#photoElement" //.. }); }); //带着数组参数向test.jsp发送get请求,返回到回调函数里弹出消息 $(function () { $("#btnTest").click(function () { $.get( "test.jsp", { a: 1, b: 2, c: 3 }, function (data) { alert(data); } ); }); }); $(function () { $("#styleDroppDown").change(function () { var styleValue = $(this).val(); $("#styleDisplay").load( "getDetails.jsp", { style: styleValue } ); adjustColorDropdown(); }).change(); $("#colorDropdown").change(adjustSizeDropdown); }) function adjustColorDropdown() { var styleValue = $("#styleDropdown").val(); var dropdownSet = $("#colorDropdown"); if (styleValue.length == 0) { dropdownSet.attr("disabled", true); dropdownSet.emptySelect(); adjustSizeDropdown(); } else { dropdownSet.attr("disabled", false); $.getJSON( "getColors.jsp", { style: styleValue }, function (data) { dropdownSet.loadSelect(data); adjustSizeDropdown(); } ); } } function adjustSizeDropdown() { var styleValue = $("#styleDropdown").val(); var colorValue = $("#colorDropdown").val(); var dropdownSet = $("#sizeDropdown"); if (styleValue.length == 0 || colorValue.length == 0) { dropdownSet.attr("disabled", true); dropdownSet.emptySelect(); } else { $.getJSON( "getColors.jsp", { style: styleValue, color: colorValue }, function (data) { dropdownSet.loadSelect(data); } ); } } $.fn.emptySelect = function () { return this.each(function () { if (this.name = "select") this.options.length == 0; }); } $.fn.loadSelect = function (optionsDataArray) { return this.emptySelect().each(function () { if (this.tagName = "select") { var selectElement = this; $.each(optionsDataArray, function (index, optionData) { var option = new Option(optionData.caption, optionData.value); if ($.browser.msie) { selectElement.add(option); } else { selectElement.add(option,null); } }); } }); } $.ajaxSetup({ type: "post", timeout: 5000, datatype: "html", error: function (xhr) { $("#errDiaplay").html("Error:"+xhr.status+" "+xhr.statusText); } }); </script> </head> <body> <form id="form1" runat="server"> <%--<div id="div1" onclick="showMsg();"> 单击事件1 </div> <div id="div2" emmanuel="amen"> 单击事件2 </div> <button id="old"> .trigger("focus")</button> <button id="new"> .triggerHandler("focus")</button><br /> <br /> <input type="text" value="To Be Focused" /> <div id="divResult"> </div> <div class="outer" id="outer1"> Outer 1 <div class="inner" id="inner1"> Inner 1</div> </div> <div class="outer" id="outer2"> Outer 2 <div class="inner" id="inner2"> Inner 2</div> </div> <div id="console"> </div> <ul> <li style="cursor: pointer">click me</li> </ul> <a id="aPraiseNet">赞美诗网</a> <div onclick="openWin('http://www.zanmeishi.com')" id="outSide" style="width: 100px; height: 100px; background: #000; padding: 50px"> </div> <div onclick="openWin('http://www.fuyin.tv')" id="inSide" style="width: 100px; height: 100px; background: #CCC"> </div> <div onclick="openWin('http://www.zanmeishi.com')" id="Div3" style="width: 100px; height: 100px; background: #000; padding: 50px"> <div onclick="openWin('http://www.fuyin.tv')" id="Div4" style="width: 100px; height: 100px; background: #CCC"> </div> </div>--%> <div> <br /> <br /> <span id="spStop">停止动画</span> <br /> <span id="spShow">显示提示文字</span> </div> kanyikanqiaoqiao<br /> <br /> <br /> <br /> <!-- 弹出层 --> <div id="divPop" style="background-color: #f0f0f0; border: solid 1px #000000; position: absolute; display: none; width: 300px; height: 100px;"> <div style="text-align: center;"> 弹出层</div> </div> <div class="ui-widget ui-widget-content ui-corner-all" style="width: 700px; padding: 5px;"> <h3> Demo. 共享同一个静态弹出层, 弹出层内容固定: </h3> <div> <span id="spanShowTip1">显示提示</span> <span id="spanShowTip2">显示提示</span> <span id="spanShowTip3">显示提示</span> <span id="spanShowTip4">显示提示</span> </div> </div> <br /> <br /> <!-- Demo 动态提示类弹出层 --> <div class="ui-widget ui-widget-content ui-corner-all" style="width: 700px; padding: 5px;"> <h3> Demo. 每个弹出层内容不同, 弹出层内容存储在事件源的元素属性中: </h3> <div> <span id="spanShowDataTip1" data="颜色是红色">红色</span> <span id="spanShowDataTip2" data="颜色是绿色">绿色</span> </div> </div> <br /> <br /> <!-- Demo 遮罩类弹出层 --> <div class="ui-widget ui-widget-content ui-corner-all" style="width: 700px; padding: 5px;"> <h3> Demo. 弹出IFrame </h3> <div> <input type="button" id="btnShowIframe" name="btnShowIframe" value="显示弹出层" /> </div> </div> <!-- 提示类弹出层 --> <div id="divTip" title="自定义标题"> <p> 弹出层</p> </div> <!-- 遮罩类弹出层 --> <div id="divIframe" title="iFrame弹出层" style="text-align: center;"> <iframe src="http://www.zanmeishi.com" width="450px" height="230px"></iframe> </div> <!--Demo. 可折叠的Tab --> <div id="tabs2" style="width: 300px;"> <ul> <li><a href="#tabs2-1">One</a></li> <li><a href="#tabs2-2">Two</a></li> <li><a href="#tabs2-3">Three</a></li> </ul> <div id="tabs2-1"> <p> Tab1内容</p> </div> <div id="tabs2-2"> <p> Tab2内容</p> </div> <div id="tabs2-3"> <p> Tab3内容</p> </div> </div> <select id="sltTestSubject" multiple="multiple" size="5"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> <div> <button type="button" id="btnTestButton">Click Me</button> </div> </form> </body> </html>