2014年12月10日星期三

在用zepto的on事件中遇到的一个奇怪问题. - jsasjs

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
在用zepto的on事件中遇到的一个奇怪问题. - jsasjs  阅读原文»

最近在一个项目运用zepto的on事件绑定,发现与jquery的事件有很大的区别,不知道是不是zepto的问题,

HTML结构如下

<div>
<ul id="test1">
<li><a id="test2">11111111</a></li>
</ul>
</div>

然后给上面的test1 和test2绑定事件,代码如下

$(document).on("click","#test1",function(){
alert(
"点击了父节点")
});
$(document).on(
"click","#test2",function(){
alert(
"点击了子节点")
});

此时,我点击a标签.理论上应该弹出 alert("点击了子节点"),alert(弹出了父节点);

可是实际上发现,用zepto的事件绑定的时候却恰好相反,先弹出了父节点,再弹出子节点,用jquery的事件绑定,一切正常,后来把事件的绑定顺序换下,先绑定子节点的再绑定父节点的则正常.

此为第一个感觉很不合理的地方.

最坑爹的第二点来了.

此时如果我需要阻止事件冒泡,理论上来说,只需要加上阻止冒泡的方法就行了.代码如下

$(document).on("click","#test2",function(event){
alert(
"点击了子节点");
event.stopPropagation();
});
$(document).on(
"click","#test1",function(){
alert(
"点击了父节点")
});

此时,在jquery下的确没有任何问题,但是在zepto下则失效.于是只好查看源码,发现代码如下

handler.del = getDelegate && getDelegate(fn, event)
var callback = handler.del || fn
handler.proxy
= function (e) {
var result = callback.apply(element, [e].concat(e.data))
//当事件处理函数返回false时,阻止默认操作和冒泡
if (result === false) e.preventDefault(), e.stopPropagation()
return result
}

于是我按照上面的要求修改.代码如下:

$(document).on("click","#test2",function(event){
alert(
"点击了子节点");
return false;
});
$(document).on(
"click","#test1",function(){
alert(
"点击了父节点")
});

发现还是不行.看来zepto与Jquery还是有很大的区别,不知道各位有没有遇到这个问题,或者知道这个问题的根本原因.当然如果纯粹只是为了实现这个功用如下代码也可以解决

$("#test2").on("click",function(event){
alert(
"点击了子节点");
return false;
});
$(
"#test1").on("click",function(){
alert(
"点击了父节点")
});

上面的绑定方式就一切正常 在zepto下.

我就想知道为什么第一种的绑定方式为什么不行.欢迎提出看法


本文链接:在用zepto的on事件中遇到的一个奇怪问题.,转载请注明。

Android Studio小技巧 - Cherbim  阅读原文»

  Android Studio都发布正式版了,还在用eclipse的小伙伴快扔掉手中的渣渣IDE,投入谷歌亲儿子的怀抱吧。

1首先安装这玩意前JAVA JDK是肯定要装并且要陪环境变量的,不然首次启动会报错。然后Android SDK最好先安装。这样在安装Android studio的时候就能选既定SDK路径。如果全自动下载的话,以我的WIN8为例,会在C:\Users\L\AppData\Local\里面创建Android\sdk,然后下载SDK。比较恶心

2如果像楼主这样二货重复下载了2个SDK那我想保留一个,咋办呢?照着下面这样做就可以了

1. Close current Project (File->Close project)

You'll get a Welcome to Android Studio Dialog. In that:

2. Click on Configure -> Project Defaults -> Project Structure

3. Click on SDKs in the left column

4. In the middle column Click on Android SDK (with Android icon) OR click + on the top if you don't see an entry with Android icon.

5. Change SDK Home Path and select valid Target

3我之前是VS的用户,这快捷键我不习惯啊!

在File-Setting里面,有一个keymap节点,最上面有一个Keymaps的选项,下拉里面选VS就行了。但我感觉这映射有点扯。还是想自定义快捷键。以我每天都要用上无数遍的格式化为例,英文叫reformat,用这个在里面搜就可以了,我改成了我喜欢E D。其他的同理。

就先这样吧,楼主还在探索中,以后有新的发现楼主会再更新该文。

参考链接:

http://stackoverflow.com/questions/16581752/android-studio-how-to-change-android-sdk-path


本文链接:Android Studio小技巧,转载请注明。

阅读更多内容

没有评论:

发表评论