标签 jQuery 下的文章

jQuery 点击其他区域关闭弹出窗体效果实现

以前尝试过用body来,结果由于冒泡的缘故,导致就算点击,也会被body中的点击事件覆盖导致根本无法弹出窗体。

于是去查了一下:

$(document).mouseup(function(e){
  var _con = $(' 目标区域 ');   // 设置目标区域
  if(!_con.is(e.target) && _con.has(e.target).length === 0){ // Mark 1
    some code...   // 功能代码
  }
});
/* Mark 1 的原理:
判断点击事件发生在区域外的条件是:
1. 点击事件的对象不是目标区域本身
2. 事件对象同时也不是目标区域的子元素
*/

关于点击空白关闭弹窗的js写法推荐?看到的,里面有许多方法, 这是其中一种,感觉也挺好的。

- 阅读剩余部分 -

HTML5/CSS/jQuery video大小屏幕自适应及获取视频宽高

今天的第一个任务,就是要让Video的大小能够满屏(适应父级div),换言之要判断高度、宽度,使之能够达到全屏的效果。

在过去的一个版本中,我们要想满屏,写了一段长长的js文件,来取高度宽度对比,之后再计算,居中也要通过js计算得出缩进值——很显然,我觉得这样不合理嘛。浪费了这么多资源在适应上,在监听时不断改变,写入CSS,看着都心累,于是在想,能不能直接通过CSS解决这样一个问题呢(自适应+水平垂直居中)。

答案是可行的。

- 阅读剩余部分 -

jQuery/CSS3 transition与动画冲突

作为一个逗比,昨天在设置了transition之后想要click事件添加动画,结果fadeIn/fadeOut发现没有用啊……太奇怪了。

结果其实是因为,fadeIn/fadeOut的本质是更改透明度,而透明度更改会发生什么呢——触发transition,oh gosh。

于是乎,如果想用transition的话(其实我是希望用它来做hover来的),那样就把过渡交给transition处理就好了。

jQuery 关于delay函数

今天很不幸的又踩了一个名叫delay的坑……T^T坑中之爹啊。

delay()在我的脑洞中应该和setTimeout一个用法,万万没想到,他们其实是有差别的。

delay()只能在动画队列中起作用,而setTimeout()才是真正的延时。

比如(正在学coffee不知道是不是这么写的):

    $(".next").click(->
        $(".main ul li").css "opacity", "0"
        setTimeout(->
            $(".main ul li").css "opacity", "0.7"
        , 1000)
        
    )

这里我需要把opacity延时,那么用delay()是不能了,css()方法并不是动画。

关于delay()的文档说明:http://www.css88.com/jqapi-1.9/delay/

jQuery 取消绑定事件unbind

今天在click打开新窗口上也遇到了问题,切换url之后发现window.open还是原来的窗口,第一时间怀疑,卧槽难道window.open有缓存?

结果搜了一下一脸困惑貌似是真的,结果试了那个方法也没用。

后来各种console.log()排查,最终怀疑到事件绑定上去了,在绑定Click事件前,先将上一个解除绑定,具体方法如下:

比如: $("p").unbind();。如果你需要解除所有事件的绑定,这是一个非常好的方法。如果要解除click事件的绑定:$("p").unbind("click");就OK了。

实际上,我们平时用的比如$("p").click(function(){})也是bind的缩写$("p").bind("click", function(){})

jQuery与DOM对象的互相转换

jQuery方法提供两种方法将一个jQuery对象转换为DOM对象
比如

var $cr = $('#cr');
var cr = $cr[0];
// var cr = $cr.get(0);

这两种方法都能把jQuery对象转换成DOM对象

而把DOM对象转换成jQuery对象只要用$()把DOM对象包起来。

比如

var cr = document.getElementById('cr');
var $r = $(cr);

之所以对这个转换有着需求,是因为DOM对象才能使用DOM中的方法,jQuery对象不可以使用DOM中的方法。

jQuery noConflict初识

导读:
w3school noConflict
jQuery API中文文档 noConflict

noConflict方法可以处理一些标记占用的冲突问题(这是目前我觉得的实用的用途)

$.noConflict()可以移交$的控制权,而如果是$.noConflict(true),那么jQuery和$都会消失,重新赋值如:
var $ = window.$.noConflict(true), jQuery = $

这样就能避免冲突在局部使用需要使用的jQuery版本啦。

jQuery HTML5播放器整合多段播放思路

最近由于工作需要在研究HTML5的播放器,HTML5其实自带的已经很全了,但是当我们需要把切割的视频整合播放的时候就遇到了麻烦,这里我想到了一个思路,正好发现网上也提到了很多这种思路:

首先多播放器窗口,除了一个以外display:none,一般需求中两个就足够了。然后监听是否结束(关于监听,稍后再发一篇讲讲Javascript的监听问题),监听本P播放结束之后将下一个的链接赋值到隐藏的那个,交替display,进度条当然需要重做,这里就需要统计总时长了。

关于HTML5 Video的事件可以参考:http://www.w3school.com.cn/tags/html_ref_audio_video_dom.asp

当然理论上很好想,实际在用的时候还是遇到了一些问题:
最近由于工作需要在研究HTML5的播放器,HTML5其实自带的已经很全了,但是当我们需要把切割的视频整合播放的时候就遇到了麻烦,这里我想到了一个思路,正好发现网上也提到了很多这种思路:

首先多播放器窗口,除了一个以外display:none,一般需求中两个就足够了。然后监听是否结束(关于监听,稍后再发一篇讲讲Javascript的监听问题),监听本P播放结束之后将下一个的链接赋值到隐藏的那个,交替display,进度条当然需要重做,这里就需要统计总时长了。

关于HTML5 Video的事件可以参考:http://www.w3school.com.cn/tags/html_ref_audio_video_dom.asp

当然理论上很好想,实际在用的时候还是遇到了一些问题:

- 阅读剩余部分 -