jQuery技术

jQuery 中的 39 个技巧 码农网(4)

字号+ 作者:H5之家 来源:H5之家 2017-03-20 08:00 我要评论( )

我们知道js中可以使用preventDefault()方法来阻止默认行为,但是jQuery对此提供了更简单的方法。如下: a href="http://google.com/"Go To Google/a$('#goToGoogle').click(false);32.使用event.result链接多个事件

我们知道js中可以使用preventDefault()方法来阻止默认行为,但是jQuery对此提供了更简单的方法。如下:

<a href="http://google.com/">Go To Google</a> $('#goToGoogle').click(false); 32.使用event.result链接多个事件处理程序。

对一个元素绑定多个事件处理程序并不常见,而使用event.result更可以将多个事件处理程序联系起来。看下面的例子。

<button>点击</button> <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> <script> var press = $('#press'); press.on('click',function(){ return 'Hip'; }); // The second event listener has access // to what was returned from the first press.on('click',function(e){ console.log(e.result + ' Hop!'); }); </script>

这样,控制台会输出Hip Hop!

33.创建你自己习惯的事件。

你可以使用on()方法创建自己喜欢的事件名称,然后通过trigger来触发。举例如下:

<button>Jump</button> <button>Punch</button> <button>Click</button> <button>Clear</button> <div></div> <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> <script> var button1 = $('#button1'), button2 = $('#button2'), button3 = $('#button3'), clear = $('#clear'), div = $('#eventDiv'); div.on({ jump : function(){ alert('Jumped!'); }, punch : function(e,data){ alert('Punched '+data+'!'); }, click : function(){ alert('Simulated click!'); } }); button1.click(function(){ div.trigger('jump'); }); button2.click(function(){ // Pass data along with the event div.trigger('punch',['hard']); }); button3.click(function(){ div.trigger('click'); }); clear.click(function(){ //some clear code }); </script> 34.在下载文件旁显示文件大小。

你知道如何在不下载一个文件的情况下通过发送一个ajax请求头得到一个文件的大小吗? 使用jQuery就很容易。

<a href="001.html">First Trickshot</a> <br /> <a href="034.html">This Trickshot</a> <br /> <a href="assets/img/ball.png">Ball.png</a> <br /> // Loop all .fetchSize links $('a.fetchSize').each(function(){ // Issue an AJAX HEAD request for each one var link = this; $.ajax({ type : 'HEAD', url : link.href, complete : function(xhr){ // Append the filesize to each $(link).append(' (' + humanize(xhr.getResponseHeader('Content-Length')) + ')'); } }); }); function humanize(size){ var units = ['bytes','KB','MB','GB','TB','PB']; var ord = Math.floor( Math.log(size) / Math.log(1024) ); ord = Math.min( Math.max(0,ord), units.length-1); var s = Math.round((size / Math.pow(1024,ord))*100)/100; return s + ' ' + units[ord]; }

注意:这个例子如何我们直接使用浏览器是没法得到的,必须使用本地的web服务器打开运行才可以。

35.使用延迟简化你的Ajax请求

延迟(deferreds)是一个强大的工具。jQuery对于每一个Ajax请求都会返回一个deferred对象。deferred.done()方法接受一个或多个参数,所有这些都参数可以是一个单一的函数或一个函数数组。当Deferred(延迟)解决时,doneCallbacks被调用。回调是依照他们添加的顺序执行。一旦deferred.done()返回Deferred(延迟)对象,Deferred(延迟)可以链接其它的延迟对象,包括增加额外的.done()方法。下面这样就会使你的代码更易读:

// This is equivalent to passing a callback as the // second argument (executed on success): $.get('assets/misc/1.json').done(function(r){ log(r.message); }); // Requesting a file that does not exist. This will trigger // the failure response. To handle it, you would normally have to // use the full $.ajax method and pass it as a failure callback, // but with deferreds you can can simply use the fail method: $.get('assets/misc/non-existing.json').fail(function(r){ log('Oops! The second ajax request was "' + r.statusText + '" (error ' + r.status + ')!'); }); 36.平行的运行多个Ajax请求。

当我们需要发送多个Ajax请求是,相反于等待一个发送结束再发送下一个,我们可以平行地发送来加速Ajax请求发送。

// The trick is in the $.when() function: $.when($.get('assets/misc/1.json'), $.get('assets/misc/2.json')).then(function(r1, r2){ log(r1[0].message + " " + r2[0].message); }); 37.通过jQuery获得ip

 

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

相关文章
  • Jquery数组操作技巧 - snowfly123

    Jquery数组操作技巧 - snowfly123

    2017-03-21 14:02

  • javascript之jQuery 性能优化技巧

    javascript之jQuery 性能优化技巧

    2017-03-19 18:05

  • JQuery实用技巧总结

    JQuery实用技巧总结

    2017-03-19 12:04

  • webjx收集45个jQuery导航插件和教程

    webjx收集45个jQuery导航插件和教程

    2017-03-18 16:00

网友点评
<