Skip to content

Instantly share code, notes, and snippets.

@jikeytang
Last active August 29, 2015 14:03
Show Gist options
  • Save jikeytang/800f2bdd05f0051764fa to your computer and use it in GitHub Desktop.
Save jikeytang/800f2bdd05f0051764fa to your computer and use it in GitHub Desktop.
[ jQuery ] - 20140714-题目1
请说出以下的区别:
1. $, $.fn
尤其是在写插件的时候?
$.fn.hilight = function( options ){};
$.hilight = function( options ){};
2. on,bind,live,delegate
3. 为什么要使用命名空间来绑定事件
$().on('click.myEvent',fn)
4. $().animate()能控制css中所有的属性实现动画?
PS:
1. 回复时注意加上下面这句话,才会有语法高亮或格式缩进。
```javascript
// you code
```
2. 粘贴代码时请使用shift+tab,缩进前面的空白。
@replace5
Copy link

1、$是构造函数,$.fn是原型对象
2、on已经集成了后面几种方法,bind是普通的事件绑定,live是delegate的一个特例,一般对于后添加的元素绑定事件之用,delegate是事件代理
3、用命名空间是为了方便的解绑事件
4、float可以么?

@bhnddowinf
Copy link

请说出以下的区别:

  1. $, $.fn

$ 这个钱记号是 “jQuery”这个物件的缩写
也就是所有你看到用 $() 的地方
都可以改写成用 jQuery()
例如:

$(document).ready(function() {  
    alert('Hello world!');        
});     

等同 

jQuery(document).ready(function() {  
    alert('Hello world!');  
});  

$.fn 在jQuery中,fn 只是一个(物件原型) 属性的别名。

尤其是在写插件的时候?
$.fn.hilight = function( options ){};
为 hilight 原型裡,提供了一个成员函数。
$.hilight = function( options ){};
在$里,扩展一个hilight函数

参考网址:http://www.becoolcms.com/HTML/2013/8/221.shtml

  1. on,bind,live,delegate

.bind()
$('a').bind('click', function() { alert("That tickles!") });
这是最直接的绑定方法。jQuery 扫描文档找到所有 $(‘a’) 元素,然后给每一个找到的元素的 click 事件绑定处理函数。

.live()
$('a').live('click', function() { alert("That tickles!") });
 jQuery绑定处理函数到 $(document) 元素,并把 ‘click’ 和 ‘a’ 作为函数的参数。
有事件冒泡到document节点的时候,检查这个事件是不是 click 事件,target element能不能匹配 ‘a’ css选择器
如果两个条件都是true,处理函数执行。
.delegate()
$('#container').delegate('a', 'click', function() { alert("That tickles!") });
 jQuery扫描文档找到 $(‘#container’),绑定处理函数到他的 click 事件,’a’ css选择器作为函数的参数。
当有事件冒泡到 $(‘#container’),检查事件是不是 click,并检查target element是不是匹配css选择器,如果两者都符合,执行函数。

on
jQuery推出on()的目的有2个
一是为了统一介面
二是为了提高性能,用on()替换bind(), live(), delegate吧。

原文网址:http://zh-tw.yescript.com/JavascriptScripts-510-jQuerybind/

  1. 为什么要使用命名空间来绑定事件
    $().on('click.myEvent',fn)

jQuery的事件命名空间-Namespaced Events
命名空间简单易懂的说就是为了避免混淆,恰似人类的姓+名。
专业解释请看 http://zh.wikipedia.org/wiki/命名空间。

命名就是取名,比如两个人都叫做小明,空间就是区分命名的
比如一个小明姓王,一个小明姓张。
王,张的姓就是空间,命名+空间(姓,名合体:王+小明,张+小明),你就不会混淆到底在说哪个小明。

jquery的事件命名空间
就是为了区分同一个jquery元素绑定的多个同名事件
使用方法就是:
$.bind(“事件名.区分后缀”, function),.trigger(“事件名.区分后缀”)。

  1. $().animate()能控制css中所有的属性实现动画?

animate() 方法执行 CSS 属性集的自定义动画。
该方法通过CSS样式将元素从一个状态改变为另一个状态。
CSS属性值是逐渐改变的,这样就可以创建动画效果。
只有数字值可创建动画(比如 "margin:30px")。
字符串值无法创建动画(比如 "background-color:red")。

范例:http://www.w3school.com.cn/tiy/t.asp?f=jquery_effect_animate

题目要求,$().animate()控制css中所有的属性。
因为函数是要人去开发、维护的
所以 animate(),遇到没有人去维护的部份,就会没有效果或是异常
然后ccs所有的属性,太复杂、太多
以至于无法控制 css中所有的属性。

.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment