亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

未正確掃描的jQuery代碼需要簡化它

未正確掃描的jQuery代碼需要簡化它

墨色風雨 2022-01-07 09:46:03
我正在嘗試為主導航中的每個元素設置跟蹤。一切正常,但在某些時候我開始收到無法讀取代碼的錯誤。我知道錯誤正在出現,因為對于每個元素,我都使用“jQuery”再次調用它:// MAIN CATEGORIES // COLLECTION MAIN    jQuery("#heading-163").one("click", function(e) {            console.log('category collection tracked');           exponea.track('main_collection', {                    action: 'click'            });        });// SLNECNE OKULIARE MAIN    jQuery("#heading-3").one("click", function(e) {            console.log('[Jarik was here] category sunglasses tracked');           exponea.track('main_sunglasses', {                    action: 'click'            });        });// DIOPTRICKE OKULIARE MAIN    jQuery("#heading-9").one("click", function(e) {            console.log('category glasses tracked');           exponea.track('main_glasses', {                    action: 'click'            });        });// LYZIARSKE MAIN    jQuery("#heading-14").one("click", function(e) {            console.log('category snow goggles tracked');           exponea.track('main_snow_goggles', {                    action: 'click'            });        });     // SPORTOVE MAIN    jQuery("#heading-38").one("click", function(e) {            console.log('category sportove tracked');           exponea.track('main_sportove', {                    action: 'click'            });        });     // ZNACKY MAIN    jQuery("#heading-48").one("click", function(e) {            console.log('category brands tracked');           exponea.track('main_brands', {                    action: 'click'            });        });   // OUTLET MAIN    jQuery("#heading-114").one("click", function(e) {            console.log('category outlet tracked');           exponea.track('main_outlet', {                    action: 'click'            });        });我的問題是,我如何將它結合起來,所以我不必每次都用'jQuery'調用新元素?謝謝你。這是錯誤代碼,它出現在我越過某些代碼行之后整個代碼停止工作
查看完整描述

1 回答

?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

好的,這是我在黑暗中的刺...


不太了解您的情況,我提出了以下代碼。我基本上將每個跟蹤事件的配置放入一個數組中,以便每次循環調用同一段代碼。


這可能有點矯枉過正,并且會因未來的變化而變得混亂,但這是ˉ\_(ツ)_/ˉ


method配置對象中的屬性與您為每個項目調用的函數有關,例如jQuery('#heading-163').one(...)vsjQuery('#heading-114 > div > div > div > a.outlet_text > img').on(...)


var trackingMap = [


    // COLLECTION MAIN

    {

        selector: '#heading-163',

        track: 'main_collection',

        method: 'one'

    },


    // SLNECNE OKULIARE MAIN

    {

        selector: '#heading-3',

        track: 'main_sunglasses',

        method: 'one'

    },


    // DIOPTRICKE OKULIARE MAIN

    {

        selector: '#heading-9',

        track: 'main_glasses',

        method: 'one'

    },


    // LYZIARSKE MAIN

    {

        selector: '#heading-14',

        track: 'main_snow_goggles',

        method: 'one'

    },


    // SPORTOVE MAIN

    {

        selector: '#heading-38',

        track: 'main_sportove',

        method: 'one'

    },


    // ZNACKY MAIN

    {

        selector: '#heading-48',

        track: 'main_brands',

        method: 'one'

    },


    // OUTLET MAIN

    {

        selector: '#heading-114',

        track: 'main_outlet',

        method: 'one'

    },

    {

        selector: '#heading-114 > div > div > div > a.outlet_text > img',

        track: 'main_outlet_left_img',

        method: 'on'

    },

    {

        selector: '#heading-114 > div > div > div > a:nth-child(3) > img',

        track: 'main_outlet_right_img',

        method: 'on'

    },

    {

        selector: '#heading-114 > div > div > div > a:nth-child(3) > button',

        track: 'main_outlet_btn',

        method: 'on'

    }

];



/**

 * Loop through tracking map items

 */

for ( var i = 0; i < trackingMap.length; i++ ) {


    /**

     * A single tracking item config

     * @type {Object}

     */

    var trackingItem = trackingMap[ i ];


    /**

     * Check if method property is valid

     */

    if ( typeof jQuery( trackingItem.selector )[ trackingItem.method ] !== 'undefined' ) {


        /**

         * Attach method listener

         */

        jQuery( trackingItem.selector )[ trackingItem.method ]( 'click', function() {

            console.log( trackingItem );


            /**

             * Check that exponea.track exists before calling

             */

            if ( typeof exponea !== 'undefined' && 'track' in exponea ) {

                exponea.track( trackingItem.track, {

                    action: 'click'

                } );

            }


        } );

    }

}



查看完整回答
反對 回復 2022-01-07
  • 1 回答
  • 0 關注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號