jQuery技术

jQuery中的一些小技巧,jQuery小技巧

字号+ 作者:H5之家 来源:H5之家 2017-01-25 16:00 我要评论( )

jQuery中的一些小技巧,jQuery小技巧。jQuery中的一些小技巧,jQuery小技巧 JQ使用过程中,一些小技巧: 1.is()方法 根据选择器、元素或 jQuery 对象来检测匹配元

jQuery中的一些小技巧,jQuery小技巧

JQ使用过程中,一些小技巧:

1.is()方法

根据选择器、元素或 jQuery 对象来检测匹配元素集合,如果这些元素中至少有一个元素匹配给定的参数,则返回 true。一些小应用如下:

list item 1list item 2list item 3 $("ul").click(function(event) { var $target = $(event.target); if ( $target.is("li") ) { $target.css("background-color", "red"); } });

如此,便可以限制住,只有列表项li本身点击之后,才会触发写入的点击事件.

其也可以做以下一些判断:

// 是不是一个div elem.is('div') && console.log("it's a div"); // 是不是有包含(也可以有其他类名)bigbox的类名的元素? elem.is('.bigbox') && console.log("it has the bigbox class!"); // 是不是隐藏的? elem.is(':not(:visible)') && console.log("it is hidden!");

这里有一点需要注意,&&运算符可以用来做一个判断,当前面的条件满足时,后面的会执行,但是后面的条件不能是表达式,只能是console.log()或则++i一类的.

还有以下比较有用的用法:

elem.animate({'width':200},1000); // 是否正在动画 elem.is(':animated') && console.log("it is animated!");

 

2.jquery中拓展方法

$.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效。
如扩展$.fn.abc(),即$.fn.abc()是对jquery扩展了一个abc方法,那么后面你的每一个jquery实例都可以引用这个方法了.
那么你可以这样子:$("#div").abc();
jQuery.extend(object);为扩展jQuery类本身.为类添加新的方法。
jQuery.fn.extend(object);给jQuery对象添加方法。

jQuery.extend(object); 为jQuery类添加添加类方法,可以理解为添加静态方法。如:

$.extend({   add:function(a,b){returna+b;} });

便为 jQuery 添加一个为add 的 “静态方法”,之后便可以在引入 jQuery 的地方,使用这个方法了,
$.add(3,4); //return 7

jQuery.fn.exists = function(){ return this.length > 0; } console.log($('#elem').exists() ? "exists!" : "doesn't exist!");

 

3.jQuery方法$()实际上是拥有两个参数的

$('li','#firstList').each(function(){ console.log($(this).html()); });

这里,第二个参数用来限制第一个参数给定的查找结果

$('<div>',{ "class": "bigBlue", "css": { "background-color":"purple" }, "width" : 20, "height": 20, "animate" : { // 可以设置div的动画效果 "width": 200, "height":50 } }).appendTo('#result');

这里,第二个参数用来对创建的元素进行设置.

 

4.jquery中的end()方法,可以让链式语法写起来更加高效,快捷.

NoNoNo breakfast.find('.eggs').text('Yes').end() // back to breakfast .find('.toast').text('Yes').end().find('.juice').toggleClass('juice coffee').text('Yes');

这里,end()会返回查找元素的上一级.

 

5.contextmenu事件  右键点击

也许希望web 应用感觉更像原生的,那么可以阻止contextmenu默认事件。

$(function(){ $(document).on("contextmenu",function(e){ e.preventDefault(); }); });

当然,应用此事件,也可以自定义,右键出来的操作菜单,类似于

 

6.有时候不希望网页的某一部分内容被选择比如复制粘贴这种事情,我们可以这么做:

$('p.descr').attr('unselectable', 'on').css('user-select', 'none').on('selectstart', false);

这样,内容就不能再被选择了.

 

7.最小的DOM操作

用js操作DOM是非常浪费资源的,下面的方法一般是我们通常的做法:

var elem = $('#elem'); for(var i = 0; i < 100; i++){ elem.append('<li>element '+i+'</li>'); }

这样做,重复的向元素中添加,无疑是一种极大的资源浪费,而通过下面的方法,则可以减少大量的DOM操作

var elem = $('#elem'),
arr = []; for(var i = 0; i < 100; i++){ arr.push('<li>element '+i+'</li>'); } elem.append(arr.join(''));

 

8.更方便的分解URL

我们一般可以使用正则表达式来分解URL,但是这并不是一个好方法,我们可以借助a标签来完成URL的分解

var url = 'http://tutorialzine.com/books/jquery-trickshots?trick=12&&abc=123#comments'; var a = $('<a>',{ href: url }); console.log(url); console.log('Host name: ' + a.prop('hostname')); //Host name: tutorialzine.com console.log('Path: ' + a.prop('pathname')); //Path: /books/jquery-trickshots console.log('Query: ' + a.prop('search')); //Query: ?trick=12&&abc=123 console.log('Protocol: ' + a.prop('protocol')); //Protocol: http: console.log('Hash: ' + a.prop('hash')); //Hash: #comments

这样我们就可以很快速的完成URL的分解

 

9.有时候,缓存selector,反而可以优化你的js

下面有三种情况,第一种情况是一部分人的通常做法,这种写法费力而且不讨好,后面两种方案则是对第一种的优化,可以二选一.

第一种:

$('#pancakes li').eq(0).remove(); $('#pancakes li').eq(1).remove(); $('#pancakes li').eq(2).remove();

 

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

相关文章
  • Jquery技巧(必须掌握)

    Jquery技巧(必须掌握)

    2017-01-25 15:05

  • 使用 jQuery 的blockUI 顯示 讀取中 @ 小技巧記錄 :: 隨意窩 Xui

    使用 jQuery 的blockUI 顯示 讀取中 @ 小技巧記錄 :: 隨意窩 Xui

    2017-01-24 10:05

  • Jquery easyui入门教程(1)

    Jquery easyui入门教程(1)

    2017-01-23 12:01

  • 网页设计视频教程-响应式手机网站制作05-jQuery Mobile-传智播客网页平面UI设计学院.zip

    网页设计视频教程-响应式手机网站制作05-jQuery Mobile-传智播客网页

    2017-01-19 18:00

网友点评
j