• jquery使用说明


    jQuery是最近比较火的一个JavaScript库,从del.icio.us/上相关的收藏可见一斑。

    到目前为之jQuery已经发布到1.2.1版本,而在这之前的一个星期他们刚发布1.2版本,看看他的各个版本的 发布时间 ,不难发现他的飞速发展,每个月都在更新版本;而且不断有人开发出新的 jQuery插件 ,最近又推出了 jQuery UI 库。

    jQuery于2006年一月十四号在BarCamp NYC (New York City)面世。主将 John Resig ,写有《Pro JavaScript Techniques》一书,因为效力于mozolla,据说firefox 3将包含Jquery,现在的 Jquery团队 有主要开发人员,推广人员,UI,插件开发,网站设计维护,其中3个主要开发人员分别是:两个美国人John Resig/Brandon Aaron,一个德国人Jorn Zaefferer)

    下面简单介绍一下jQuery的一些特性和用法:

    1.精准简单的选择对象(dom):

    $('#element');// 相当于document.getElementById("element")

    $('.element');//Class
    $('p');//html标签
    $("form > input");//子对象
    $("div,span,p.myClass");//同时选择多种对象
    $("tr:odd").css("background-color", "#bbbbff");//表格的隔行背景
    $(":input");//表单对象
    $("input[name='newsletter']");//特定的表单对象

    2.对象函数的应用简单和不限制:

    element.function(par);

    $(”p.surprise”).addClass(”ohmy”).show(”slow”)...

    3.对已选择对象的操作(包括样式):

    $("#element").addClass("selected");//给对象添加样式
    $('#element').css({ "background-color":"yellow", "font-weight":"bolder" });//改变对象样式
    $("p").text("Some new text.");//改变对象文本
    $("img").attr({ src: "test.jpg", alt: "Test Image" });//改变对象文本
    $("p").add("span");//给对象增加标签
    $("p").find("span");//查找对象内部的对应元素
    $("p").parent();//对象的父级元素
    $("p").append("<b>Hello</b>");//给对象添加内容

    4.支持aJax,支持文件格式:xml/html/script/json/jsonp

    $("#feeds").load("feeds.html");//相应区域导入静态页内容
    $("#feeds").load("feeds.php", {limit: 25}, function(){alert("The last 25 entries in the feed have been loaded");});//导入动态内容

    4.对事件的支持:

    $("p").hover(function () {
          $(this).addClass("hilite");//鼠标放上去时
        }, function () {
          $(this).removeClass("hilite");//移开鼠标
        });//鼠标放上去和移开的不同效果(自动循环所有p对象

    5.动画:

    $("p").show("slow");//隐藏对象(慢速渐变)
    $("#go").click(function(){
    $("#block").animate({
        "90%",
        height: "100%",
        fontSize: "10em"
    }, 1000 );
    });//鼠标点击后宽、高、字体的动态变化

    6.扩展:

    $.fn.background = function(bg){
        return this.css('background', bg);
    };
    $(#element).background("red");

    如果要为每一个jQuery 对象添加一个函数,必须把该函数指派给 $.fn,同时这个函数必须要返回一个 this(jQuery 对象)

    jQuery相关

    1. 《Learning jQuery:Better Interaction Design and Web Development with Simple JavaScript Techniques》第一本由jQuery的开发人员写的关于如何学习jQuery的书已经于七月面世,同时还有三本相关的书在问世当中。
    2. jQueryCamp 2007,一个jQuery开发人员的见面会也将于10月27日在Boston召开。
    3. VisualJquery是一个Jquery的学习和查询网站,也跟着更新到了1.1.2版本。

    jQuery官网介绍翻译:

    jQuery是一个以前未曾有过的JavaScript库。
    他快速、简洁,能够很轻易地处理HTML文档、控制事件、给页面添加动画和Ajax效果。

    jQuery是为了改变JavaScript的编写方式而设计的。

    • 他适合所有人:设计师、开发人员、极客、商业应用...
    • 体积小:26.5KB(1.2.1压缩版),45.3KB(1.2.1精简版),78.6KB(1.2.1完整版)...20.7KB(1.1.2压缩版),57.9KB(1.1.2完整版)
    • 兼容性:支持CSS 1-3和基本的XPath
    • 跨浏览器:IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+(向后兼容)

    jQuery插件

    Ajax (25)/Animation and Effects (26)/Browser Tweaks (6)/Data (17)/DOM (21)/Drag-and-Drop (6)/Events (19)/Forms (39)/Integration (12)/JavaScript (20)/jQuery Extensions (37)/Layout (23)/Media (13)/Menus (13)/Navigation (23)/Tables (11)/User Interface (84)/Utilities (27)/Widgets (41)/Windows and Overlays (4)

    jQueryUI库

    基本的鼠标互动:拖拽(drag and dropping)、排序(sorting)、选择(selecting)、缩放(resizing)
    各种互动效果:手风琴式的折叠菜单(accordions)、日历(date pickers)、对话框(dialogs)、滑动条(sliders)、表格排序(table sorters)、页签(tabs)、放大镜效果(magnifier)、阴影效果(shadow)

    来一个简单的示例,来说明jQuery是如何工作的:

    <!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>
    <title>无标题页</title>
    </head>
    <body id="bd">
    <a href="http://www.baidu.com">baidu</a>
    </body>
    </html>
    <script type="text/javascript" src="../Script/jquery.js"></script>
    <script type="text/javascript" >
    $(function(){
    $("a").click(function(e){//1)查找$("a");2)jQuery对象事件click;3)jQuery对象方法hide
           $(this).hide("slow");
           return false;
    });
    });
    </script>

    jQuery中有一个"配置"的思想,这一点使得对象的属性/事件等设置变得容易理解且十分简便,如下一个拖拽组件的初始化:

    $(document).ready(
    function()
    {
           $('#drag1').Draggable({
             handle: "ax",             //属性设置
             onStart: function(el,x,y){   //事件监听器设置   
             }
           });
    }
    );

    可以看到,$("#drag1")是查找并创建一个jquery对象,然后调用Draggable方法进行拖拽初始化,在此方法调用时,传递一个"配置"对象,进行拖拽操作的初始化配置.这一"配置"的思想,极大简化了一些编码步骤,并相当直观和易懂.

    三个问答:


    • 1)问:为什么$(selector)之后,返回的是jQuery对象?
      答:从jQuery的源代码中,我们可以知道:var $ = jQuery.因此当我们$(selector)操作时,其实就是jQuery(selector),创建的是一个jQuery对象.当然正确的写法应该是这样的:var jq = new $(selector);而jQuery使用了一个小技巧在外部避免了new,在jquery方法内部:if ( window == this ) return new jQuery(selector);
    • 2)问:为什么创建一个jQuery对象之后,我们可以这样写$(selector).each(function(index){...});进行遍历操作呢?
      答:其实jQuery(selector)方法调用时,在jQuery(selector)方法内部,最后返回的是一个数组:return this.setArray(a);而each方法体内部是一个for循环,在循环体内是这样调用的:method.call(this[ i],i).
    • 3)问:为什么jQuery能做到jQuery对象属性/方法/事件的插件式扩展?
      答:如果您有一些javasciprt的面向对象方面的知识,就会知道,jQuery.prototype原型对象上的扩展属性/方法和事件,将会给jQuery的对象"扩展".基于这一点,jQuery是这样写的:jQuery.fn = jQuery.prototype.


    所以,当我们扩展一个插件功能时,如下:

    jQuery.fn.check = function() {
       return this.each(function() {
    this.checked = true;
       });
    };

    其实就是:

    jQuery.prototype.check = function() {
       return this.each(function() {
    this.checked = true;
       });
    };

    综上所述,jQuery给我们带来了一个简洁方便的编码模型(创建jQuery对象;直接使用jQuery对象的属性/方法/事件),一个强悍的dom元素查找器($),插件式编程接口(jQuery.fn),以及插件初始化的"配置"对象思想.

    实现自己的jQuery

    <!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>
    <title>Untitled Page</title>
    </head>
    <body>
    <div id="d">divvv</div>
    <div id="fsd">fdsf</div>
    </body>
    </html>
    <script type="text/javascript">
    //实现自己的MyQuery框架
    var MyQuery = function(selector){
    if ( window == this ) return new MyQuery(selector);
    //这里只实现dom类型的简单查找,嘿嘿
    var doms = document.getElementsByTagName(selector);
    var arr = [];
    for(var i=0; i<doms.length; i++){
           arr.push(doms.item(i));
    }
    return this.setArray(arr);
    }
    MyQuery.prototype.setArray = function( arr ) {
           this.length = 0;
           [].push.apply( this, arr );
           return this;
    }
    MyQuery.fn = MyQuery.prototype;
    var $ = MyQuery;

    //插件扩展1)each
    MyQuery.fn.each = function(method){
    for(var i=0,l=this.length; i<l; i++){
           method.call(this[i],i);
    }
    }
    //插件扩展2)show
    MyQuery.fn.show = function(){
    this.each(function(i){
           alert(i+":"+this.id+":"+this.innerHTML);
    });
    }
    //debugger
    $("div").show();
    </script>
  • 相关阅读:
    冒泡排序算法
    delphi 处理图片(剪切,压缩)
    delphi 创建DLL文件 及其调用和注意事项
    对属性的认识
    timer实现Grid自动换行(连续相同的id跳到下一行)
    Form1调用Unit2类中函数
    微信二次分享不显示摘要和图片
    location.search为空导致微信拿不到code的问题
    考虑一下微信跳转的登录流程如何修改-无感知
    微信7.0(2019年1月份之后,没法使用抓包了,也许是为了安全,所以联调出问题记得看后台日志)
  • 原文地址:https://www.cnblogs.com/zzxap/p/2175943.html
Copyright © 2020-2023  润新知