首页 > 代码库 > 第一波实习的前端笔记(2)——js.md

第一波实习的前端笔记(2)——js.md

1.如何解决移动端点透问题?

$(‘xx‘).on(‘touchend‘,  function(event){ 
        event.preventDefault();
    })
但是,存在滑动页面会触发问题。期待更好的解决方案

2.如何不让浏览器链接跳转不被浏览器记录?

location.replace(); 使用 replace() 方法来替换当前文档:
replace函数在设置URL方面与location的href属性,但是它会删除history对象的地址列表中的URL,从而使go或back等函数无法导航

3.关于重复绑定的问题

问题描述:单页应用中存在同一个按钮根据不同的状态绑定不同的事件时,可能会产生上一个状态的事件继续存在的问题
解决方法:
A.使用$(".class").die().live("tap",function(e){},die方法在每次绑定之前可以进行解锁绑定的操作
B.使用unbind()方法进行解锁
C.使用Light框架自带的event事件进行绑定(
events:{
      ‘tap .ui-btn‘: ‘competRegist‘
    }
    )

 


因为要想取消重复绑定最好每次绑定前取消一次绑定,所以推荐第一种方法或者使用Light自带的event事件(机理不是很清楚,但确实只进行了一次绑定)。

4.inArray 数组中是否存在某个值

//参考 http://blog.csdn.net/jumtre/article/details/41893779
    Array.prototype.contains = function(obj){
        var i = this.length;
        while(i--){
            if(this[i] == obj){
                return true;
            }
        }
        return false;
    }
    
    if(!Array.indexOf){
        Array.prototype.indexOf = function(obj){
            for(var i=0, l=this.length; i<l; i++){
                if(this[i] == obj){
                    return i;
                }
            }
            return -1;
        }
    }
    
    function inArray(array, value, fromIndex){
        if(array) {
            if(!Array.indexOf){
                return Array.indexOf.call(array, value, fromIndex);
            }
            for(var l=array.length,i = formIndex ? 0 > fromIndex ? Math.max(0, l+fromIndex) : fromIndex : 0; i < l; i++){
                if(i in array && array[i] == value){
                    return i;
                }
            }
        }
        return -1;
    }

 

第一波实习的前端笔记(2)——js.md