成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript常用腳本集錦4

yeooo / 3151人閱讀

摘要:一些元素位置設(shè)置的通用方法查找元素的左端位置代碼依賴來自查找元素的頂端位置設(shè)置元素和位置與當(dāng)前位置無關(guān)的一對函數(shù)設(shè)置元素水平的函數(shù)設(shè)置元素垂直位置的函數(shù)在元素的水平位置上增加像素距離的函數(shù)在元素的垂直位置上增加像素距離的函數(shù)代碼來源元素相對

一些元素位置設(shè)置的通用方法
/**
 * 查找元素的左端位置,
 * 代碼依賴:getStyle來自 https://gist.github.com/hehongwei44/9abf63536accd0f2eeb7
 * */

function posX(elem) {
    return parseInt(getStyle(elem, "left"));
}
/**
 * 查找元素的頂端位置
 * */

function posY(elem) {
    return parseInt(getStyle(elem, "top"));
}

/*設(shè)置元素x和y位置(與當(dāng)前位置無關(guān))的一對函數(shù)*/
/**
 * 設(shè)置元素水平的函數(shù)
 * */
function setX(elem, pos) {
    elem.style.left = pos + "px";
}

/**
 * 設(shè)置元素垂直位置的函數(shù)
 * */
function setY(elem, pos) {
    elem.style.top = pos + "px";
}

/**
 * 在元素的水平位置上增加像素距離的函數(shù)
 * */
function addX(elem, pos) {
    setX(posX(elem) + pos);
}
/**
 * 在元素的垂直位置上增加像素距離的函數(shù)
 * */
function addY(elem, pos) {
    setY(posY(elem) + pos);
}

代碼來源:https://gist.github.com/hehongwei44/7f0eca7c0a0ae19adc9f

元素相對于整個父親節(jié)點的left和top的輔助函數(shù)
/**
 * 元素elem相對于父親元素的左端和頂端的位置
 * 依賴腳本:https://gist.github.com/hehongwei44/8d33a6e35ee045722e75
 * */

/**
 * 獲取元素相對于父親元素的水平位置
 * */
function parentX(elem) {
    /**
     * 如果offsetParent是元素的父親,那么提前提出
     * 否則,我們需要找到元素和元素的父親相對于整個頁面位置,并計算他們之間的差
     * */
    return elem.parentNode == elem.offsetParent ? elem.offsetLeft : pageX(elem) - pageX(elem.parentNode);
}

/**
 * 獲取元素相對于父親元素的頂端位置
 *
 * */
function parentY(elem) {
    /**
     * 如果offsetParent是元素的父親,那么提前提出
     * 否則,我們需要找到元素和元素的父親相對于整個頁面位置,并計算他們之間的差
     * */
    return elem.parentNode == elem.offsetParent ? elem.offsetTop : pageY(elem) - pageY(elem.parentNode);
}

代碼來源:https://gist.github.com/hehongwei44/d8530ae974b1aabbab55

元素相對于整個文檔的left和top的輔助函數(shù)
/*元素elem相對于整個文檔的左端和頂端的位置*/

/**
 * 獲取元素的水平位置
 * */
function pageX(elem) {
    /**
     * 參看我們是否位于根元素
     * 如果我們能繼續(xù)得到上一個元素,增加當(dāng)前偏移量并繼續(xù)向下遞歸.
     * 否則,獲取當(dāng)前的偏移量.
     * */
    return elem.offsetParent ? elem.offsetLeft + pageX(elem.offsetParent) : elem.offsetLeft;
}

/**
 * 獲取元素的頂端位置
 *
 * */
function pageY(elem) {
    /**
     * 參看我們是否位于根元素
     * 如果我們能繼續(xù)得到上一個元素,增加當(dāng)前偏移量并繼續(xù)向下遞歸.
     * 否則,獲取當(dāng)前的偏移量.
     */
    return elem.offsetParent ? elem.offsetTop + pageY(elem.offsetParent) : elem.offsetTop;
}

代碼來源:https://gist.github.com/hehongwei44/8d33a6e35ee045722e75

事件模型的封裝
/**
 *
 * @author Dean Edwards
 * @date 2005/10
 * @link http://dean.edwards.name/weblog/2005/10/add-event/
 * @transform  https://github.com/hehongwei44
 * @compatibility IE6+ ,FF, chrome
 *
 * */

 //調(diào)用方式->addEvent(window, "load", function(){})
function addEvent(element, type, handler) {
    //如果瀏覽器原生支持W3C的標準行為addEventListener函數(shù),則直接綁定函數(shù)句柄.
    if (element.addEventListener) {
        //flase表示不支持事件捕捉,主流瀏覽器都支持該標準,IE9+
        element.addEventListener(type, handler, false);
    } else {
        // 為每一個事件句柄賦值一個獨立的ID,addEvent.guid的初始值為1.
        if (!handler.$$guid) handler.$$guid = addEvent.guid++;
        // 為元素建立一個事件類型的散列表
        if (!element.events) element.events = {};
        // 為每對元素/事件建立一個事件處理函數(shù)的散列表
        var handlers = element.events[type];

        if (!handlers) {

            handlers = element.events[type] = {};
            // 存儲已有的事件處理函數(shù)(如果已存在一個),ps:用來特殊處理"on+type"的類型事件.
            if (element["on" + type]) {
                handlers[0] = element["on" + type];
            }
        }
        // 在散列表中存儲該事件的處理函數(shù).
        handlers[handler.$$guid] = handler;
        // 賦以一個全局事件處理函數(shù)來處理所有的工作
        element["on" + type] = handleEvent;
    }
}
// 創(chuàng)建獨立ID的計數(shù)器
addEvent.guid = 1;

function removeEvent(element, type, handler) {
    if (element.removeEventListener) {
        element.removeEventListener(type, handler, false);
    } else {
        // 從散列表中刪除事件處理函數(shù)
        if (element.events && element.events[type]) {
            delete element.events[type][handler.$$guid];
        }
    }
}
//事件處理函數(shù)
function handleEvent(event) {
    var returnValue = true;
    // 獲取事件對象(IE使用全局事件對象)
    event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
    // 獲取事件處理函數(shù)散列表的引用.
    var handlers = this.events[event.type];
    // 依次執(zhí)行每個事件處理函數(shù)
    for (var i in handlers) {
        this.$$handleEvent = handlers[i];
        //執(zhí)行回調(diào)函數(shù)
        if (this.$$handleEvent(event) === false) {
            returnValue = false;
        }
    }
    return returnValue;
}

//重新包裝event對象,使其兼容IE和W3C標準.
function fixEvent(event) {
    // 增加W3C標準事件方法.
    event.preventDefault = fixEvent.preventDefault;
    event.stopPropagation = fixEvent.stopPropagation;
    return event;
}
//IE瀏覽器阻止默認行為的方式
fixEvent.preventDefault = function () {
    //this指向event對象
    this.returnValue = false;
}
//IE瀏覽器阻止冒泡的方式
fixEvent.stopPropagation = function () {
    //this指向event對象
    this.cancelBubble = true;
};

代碼來源:https://gist.github.com/hehongwei44/3c9ec099751f8f2e197e

阻止事件冒泡和默認行為的通用函數(shù)
/**
 * 阻止事件冒泡的通用函數(shù)
 * */
function stopBubble(e) {
    if (e && e.stopPropagation) {
        e.stopPropagation();
    } else {
        window.event.cancelBubble = true;
    }
}

/**
 * 防止發(fā)生默認瀏覽器行為的通用函數(shù)
 * */
function stopDefault(e) {
    if (e && e.preventDefault) {
        e.preventDefault();
    } else {
        window.event.returnValue = false;
    }
    return false;
}

代碼來源:https://gist.github.com/hehongwei44/5fb2134a70ab8379849e

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/87693.html

相關(guān)文章

  • JavaScript常用腳本集錦2

    摘要:把中的偽數(shù)組轉(zhuǎn)換為真數(shù)組在中,函數(shù)中的隱藏變量和用獲得的元素集合都不是真正的數(shù)組,不能使用等方法,在有這種需要的時候只能先轉(zhuǎn)換為真正的數(shù)組。檢測元素是否支持某個屬性代碼用法創(chuàng)建和使用命名空間使用方式 把JavaScript中的偽數(shù)組轉(zhuǎn)換為真數(shù)組 在 JavaScript 中, 函數(shù)中的隱藏變量 arguments 和用 getElementsByTagName 獲得的元素集合(Nod...

    xialong 評論0 收藏0
  • JavaScript常用腳本集錦5

    摘要:代碼來源一些常用的操作方法介紹查找相關(guān)元素的前一個兄弟元素的方法。查找元素指定層級的父元素。 DOM操作的增強版功能函數(shù) /** * 將一個DOM節(jié)點、HTML字符串混合型參數(shù) * 轉(zhuǎn)化為原生的DOM節(jié)點數(shù)組 * * */ function checkElem(a) { var r = []; if (a.constructor != Array) { ...

    joywek 評論0 收藏0
  • JavaScript常用腳本集錦8

    摘要:進制為代碼來源通過標簽解析通過標簽解析標簽參數(shù)是字符串,解析的目標通過測試創(chuàng)建一個標簽將賦值給標簽的屬性。協(xié)議主機名稱端口查詢字符串查詢參數(shù)文件名哈希參數(shù)路徑相對路徑路徑片段代碼來源 圖片預(yù)加載 // 更新: // 05.27: 1、保證回調(diào)執(zhí)行順序:error > ready > load;2、回調(diào)函數(shù)this指向img本身 // 04-02: 1、增加圖片完全加載后的回調(diào) 2、提...

    blankyao 評論0 收藏0
  • JavaScript常用腳本集錦3

    通過數(shù)組,拓展字符串拼接容易導(dǎo)致性能的問題 function StringBuffer() { this.__strings__ = new Array(); } StringBuffer.prototype.append = function (str) { this.__strings__.push(str); return this; } StringBuffer....

    dack 評論0 收藏0
  • JavaScript常用腳本集錦6

    摘要:它會指出一個類是繼承自另一個類的。測試測試代碼來源頁面倒計時的一段運用倒計時的一段腳本。截止日期符合日期格式,比如等有效日期。截止的天數(shù)小時分鐘秒數(shù)組成的對象。 清楚節(jié)點內(nèi)的空格 function cleanWhitespace(element) { //如果不提供參數(shù),則處理整個HTML文檔 element = element || document; //...

    Acceml 評論0 收藏0

發(fā)表評論

0條評論

yeooo

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<