AJax技术

译自Getting Started with jQuery(3)

字号+ 作者:H5之家 来源:H5之家 2015-10-15 11:13 我要评论( )

这段代码生成了5个链接,并将它们追加到id为"rating"容器中,当其中一个链接被点击时,该链接标明的分数就会以rating参数形式发送到rate.php,然后,结果将以XML形式会从服务器端传回来,添加到容器中,替代这些链

这段代码生成了5个链接,并将它们追加到id为"rating"容器中,当其中一个链接被点击时,该链接标明的分数就会以rating参数形式发送到rate.php,然后,结果将以XML形式会从服务器端传回来,添加到容器中,替代这些链接。

如果你没有一个安装过PHP的webserver,你可以看看这个在线的例子.

不使用javascript实现的例子可以访问 softonic.de 点击 "Kurz bewerten!"

更多的AJAX方法可以从这里 找到,或者看看API文档 下面的AJAX filed under AJAX.

(译者Keel注:这个在线实例从国内访问还是比较慢的,点击后要等一会儿才能看到结果,可以考虑对它进行修改,比如加上loading,投票后加上再投票的返回链接等。此外,这个例子中还是有很多需要进一步消化的地方,看不懂的地方请参考API文档。)

一个在使用AJAX载入内容时经常发生的问题是:当载入一个事件句柄到一个HTML文档时,还需要在载入内容上应用这些事件,你不得不在内容加载完成后应用这些事件句柄,为了防止代码重复执行,你可能用到如下一个function:

// lets use the shortcut $(function() { var addClickHandlers = function() { $("a.clickMeToLoadContent").click(function() { $("#target").load(this.href, addClickHandlers); }); }; addClickHandlers(); });

现在,addClickHandlers只在DOM载入完成后执行一次,这是在用户每次点击具有clickMeToLoadContent 这个样式的链接并且内容加载完成后.

请注意addClickHandlers函数是作为一个局部变量定义的,而不是全局变量(如:function addClickHandlers() {...}),这样做是为了防止与其他的全局变量或者函数相冲突.

另一个常见的问题是关于回调(callback)的参数。你可以通过一个额外的参数指定回调的方法,简单的办法是将这个回调方法包含在一个其它的function中:

// get some data var foobar = ...; // specify handler, it needs data as a paramter var handler = function(data) { ... }; // add click handler and pass foobar! $('a').click( function(event) { handler(foobar); } ); // if you need the context of the original handler, use apply: $('a').click( function(event) { handler.apply(this, [foobar]); } );

用到简单的AJAX后,我们可以认为已经非常之“web2.0”了,但是到现在为止,我们还缺少一些酷炫的效果。下一节将会谈到这些效果.

本章的相关链接:

Animate me(让我生动起来):使用FX

一些动态的效果可以使用 show() 和 hide()来表现:

$(document).ready(function() { $("a").toggle(function() { $(".stuff").hide('slow'); }, function() { $(".stuff").show('fast'); }); });

你可以与 animate()联合起来创建一些效果,如一个带渐显的滑动效果:

$(document).ready(function() { $("a").toggle(function() { $(".stuff").animate({ height: 'hide', opacity: 'hide' }, 'slow'); }, function() { $(".stuff").animate({ height: 'show', opacity: 'show' }, 'slow'); }); });

很多不错的效果可以访问interface plugin collection. 这个站点提供了很多demos和文档

这些效果插件是位于jQuery插件列表的前面的,当然也有很多其他的插件,比如我们下一章讲到的表格排序插件。

本章的相关链接:
  • jQuery FX Module
  • Interface plugin
  • Sort me(将我有序化):使用tablesorter插件(表格排序)

    这个表格排序插件能让我们在客户端按某一列进行排序,引入jQuery和这个插件的js文件,然后告诉插件你想要哪个表格拥有排序功能。

    要测试这个例子,先在starterkit.html中加上像下面这一行的代码:

    <script src="lib/jquery.tablesorter.js" type="text/javascript"></script>

    然后可以这样调用不着:

    $(document).ready(function() { $("#large").tableSorter(); });

    现在点击表格的第一行head区域,你可以看到排序的效果,再次点击会按倒过来的顺序进行排列。

    这个表格还可以加一些突出显示的效果,我们可以做这样一个隔行背景色(斑马线)效果:

    $(document).ready(function() { $("#large").tableSorter({ stripingRowClass: ['odd','even'], // Class names for striping supplyed as a array. stripRowsOnStartUp: true // Strip rows on tableSorter init. }); });

    关于这个插件的更多例子和文档可以在 tablesorter首页找到.

    几乎所有的特件都是这样用的:先include插件的js文件,然后在某些元素上使用插件定义的方法,当然也有一些参数选项是可以配置的

    经常更新的插件列表可以从jQuery官方站 on the jQuery site找到.

    当你更经常地使用jQuery时,你会发现将你自己的代码打包成插件是很有用处的,它能方便地让你的公司或者其他人进行重用.下一章我们将谈到如何构建一个自己的插件.

    本章的相关链接:
  • Plugins for jQuery
  • Tablesorter Plugin
  • Plug me:制作自己的插件

    写一个自己的jQuery插件是非常容易的,如果你按照下面的原则来做,可以让其他人也容易地结合使用你的插件.

  • 为你的插件取一个名字,在这个例子里面我们叫它"foobar".
  • 创建一个像这样的文件:jquery.[yourpluginname].js,比如我们创建一个jquery.foobar.js
  • 创建一个或更多的插件方法,使用继承jQuery对象的方式,如: jQuery.fn.foobar = function() { // do something };
  • 可选的:创建一个用于帮助说明的函数,如: jQuery.fooBar = { height: 5, calculateBar = function() { ... }, checkDependencies = function() { ... } };

    你现在可以在你的插件中使用这些帮助函数了:

    jQuery.fn.foobar = function() { // do something jQuery.foobar.checkDependencies(value); // do something else };
  • 可选的l:创建一个默认的初始参数配置,这些配置也可以由用户自行设定,如: jQuery.fn.foobar = function(options) { var settings = { value: 5, name: "pete", bar: 655 }; if(options) { jQuery.extend(settings, options); } };

    现在可以无需做任何配置地使用插件了,默认的参数在此时生效:

    $("...").foobar();

    或者加入这些参数定义:

    $("...").foobar({ value: 123, bar: 9 });
  • 如果你release你的插件, 你还应该提供一些例子和文档,大部分的插件都具备这些良好的参考文档.

    现在你应该有了写一个插件的基础,让我们试着用这些知识写一个自己的插件.

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    网友点评