在js高程中HTML事件里有这么一个新事件,contextmenu,即上下文菜单。通过单击鼠标右键可以调出上下文,就像我们在网页中使用右键弹出菜单一样,js中可以通过contextmenu实现这一功能。先来看看效果:

(在红色区域点击鼠标右键弹出菜单,点击其他红色区域取消菜单)

继续阅读

这是之前一直都很混淆的东西,今天有时间,顺便整理一下:

(以下图片都可点击后看大图!)

1、clientX、clientY

首先是clientX、clientY,是获取客户区坐标的位置,不太好理解,看下这个图就秒懂了:
clientX

无论有没有滚动条,无论滚动条向下滚动了多少,clienX、clientY永远获取的是框中的坐标的位置。

继续阅读

1.事件委托

这个经常会用到,比如有很多个li,我们把事件委托在ul上,这样无论li增加或减少,都会绑定到事件。

有个比较形象的比喻来形容事件委托:有三个人预计会在周一收到快递,有两种方法:第一:每个人都到公司门口等快递;第二:委托给前台MM带领快递。当然,第二种方法是我们经常会用到的方法,也就是事件委托。

jquery有bind(),live(),delegate(),on()来实现事件委托,我最近经常使用on(),用法如下:

$("div").on("click","a",function(){
  //some code
})

.on()方法还可以接收一个data参数,表示触发事件时传递给事件的参数。
下面的例子便用了事件委托。

2.jquery $("").each()方法

each()提供了遍历元素的一种方法,比如我想实现三个按钮,背景色切换的效果,就可以这样去做:

$("div").on("click","a",function(e){
  self = $(this)
  $("a").each(function(){
    if($(this).hasClass("active")){
        $(this).removeClass("active")
    }
  })
  if(!self.hasClass("active")){
    self.addClass("active")
  }
})

当然还有很多其他的方法,下面这个更简洁:

$("div").on("click","a",function(e){
  $(this).addClass("active").siblings().removeClass("active");
})

测试:

继续阅读

1985年,我是明尼苏达州圣奥拉夫学院的一名大一新生。学院有一台 VAX 11/780 计算机,运行 4.2BSD 系统,还有一台 PDP-11/70 计算机,运行掺有伯克利和本地一些代码的 UNIX V7。除了拨号进入一两个 MS-DOS 论坛之外,这是我第一次体验多用户系统。

学院的学术计算中心把 4.2BSD 的手册打印出来,再加上一些本校的文档,对外公开出售,所以学生们就可以学习如何使用 UNIX 系统了。一个星期时间里,我坐在科学中心终端室,开始通读 VAX 上按字母排序的命令列表,尝试每一个命令并查阅相应的帮助文档,了解这些命令的使用方法。

继续阅读

以前对js的了解很少,看到this相关的文章的时候会看不懂,现在随着逐渐对js的学习深入,一些之前认为比较困难的现在再去看,已经不在那么难以理解。

今天转载一篇js关于this的文章,写的很全面并且易于理解,最起码自己看懂并理解了~~

首先看看下面两个对this的概括:

this是执行上下文(Execution Context)的一个重要属性,是一个与执行上下文相关的特殊对象。因此,它可以叫作上下文对象(也就是用来指明执行上下文是在哪个上下文中被触发的对象)。

继续阅读

React框架最近很火,一直想着用这个框架练练手,做点什么小东西,于是今天边去看文档,在官方文档上有一个小标题吸引了我,“Give It Five Minutes”,读了这篇文章有所得,下面是自己翻译的内容,因为我的英语水平很有限,翻译的很不标准。

这是原文链接:Give It Five Minutes

继续阅读

之前一直使用git,现在刚在公司实习,公司使用的是hg,在网上找到一些资料来学习一下。

Hg 在化学元素周期表里表示的是汞(水印),英文为Mercurial,是一款优秀的分布式版本控制系统(DVCS,Distributed Version Control System),具有高效率,跨平台、可扩展、使用简便且开源等优点。和git类似。

一、安装Mercucial Hg

sudo apt-get install mercurial

二、使用Hg

1、初始化:init

hg init //init是初始化,创建一个新的仓库

2、添加文件至缓冲区:add

mkdir hgTest
cd hgTest
echo "hg test">test.txt
hg add test.txt

3、提交文件:commit

hg commit -m "first commit"

4、查看文件的状态:status

hg status
//以下是常用的标记:
M test.txt //表示提交后,再次修改过,还没提交
A test.txt //表示已经添加(add)过,还没有提交
? test.txt //表示还没有添加(add)过
//执行后,什么也不提示说明,所有文档已经提交且没有再次修改

5、代码迁移:clone

hg clone https://q414625852@bitbucket.org/xxx/xxx //来源可为ssh、https或者本地仓库

6、撤销所有改动:revert

hg revert test.txt
//此时再次查看状态,则为问号,表示还没添加

7、将当前仓库与其他仓库一致:pull
pull的意思是拉,如果本地仓库与远程仓库不一致时,或者本地仓库没有,而其他仓库有的时候,将其他仓库有的代码下载到当前仓库,不过,这只是增加了变更集,文件并没有改变。

hg pull

update,更新,pull之后只是获得变更集,如果想要代码改变,执行以下update命令即可。

hg update

8、将本地代码提交到远程仓库:push
commit是将代码提交到本地仓库,push是将提交到本地仓库的代码提交到远程仓库。

hg push

9、查看仓库提交历史:log

hg log

10、查看文件的改变:diff

hg digff test.txt

11、合并改变:merge

12、当fetch别人的代码出现unresolve的时候,解决方法:

先查看哪些文件未被合并:

hg resolve -l

然后,进入该文件编辑,进行修正,修正完毕后,标记成已解决:

hg resolve -m

然后在提交即可。