Подсказка в jQuery Отключить - PullRequest
1 голос
/ 28 мая 2020

У меня небольшая проблема, которую я хотел бы решить.

Это веб-сайт, который сообщает о проблеме https://byobcreatubolso.com/producto/sario-sart/

Когда пользователь нажимает на первое изображение, отображаются 3 элемента: 'Fantasia' 'Plain Skin' 'Metalli c'

В разделе фэнтези по умолчанию отображаются пометки. То есть раздел открыт по умолчанию.

Я хотел бы sh установить такое же поведение для остальных разделов «Обычная кожа» и c. это возможно?

Я приложил код. Спасибо,

    jQuery(document).ready(function() {

    jQuery('.select-zone .seccion_imagen').css('cursor', 'pointer');
    jQuery('.iconic-was-swatches__label').css('cursor', 'pointer');
    jQuery('.js-toggle-next').css('cursor', 'pointer');
    //First hide elements
    jQuery('.variations .label label').hide();
    jQuery('.variations .value').hide();
    jQuery('.iconic-was-swatches__item').hide();
    // Show first level
    jQuery('.select-zone .seccion_imagen').on('click touchstart', function(event) {
        jQuery('.select-zone .seccion_imagen').removeClass('selected');
        jQuery(this).addClass('selected');
        jQuery('.variations .value').hide('slow');
        jQuery('.iconic-was-swatches__item').hide('slow');
        var elemento = jQuery(this).attr('id');
        jQuery('[for=' + elemento + ']').parent().next('.value').show('slow');
        jQuery('[for=' + elemento + ']').parent().next('.value').children('ul').children('.iconic-was-swatches__label:first').nextUntil('.iconic-was-swatches__label').css('display', 'inline-block');
    });
    // Show second level
    jQuery('.iconic-was-swatches__label').on('click touchstart', function(event) {
        jQuery('.iconic-was-swatches__label').hide();
        jQuery('.iconic-was-swatches__item').hide();
        jQuery(this).nextUntil('.iconic-was-swatches__label').css('display', 'inline-block');
    });
    // Get selected values and draw in rigth place
    jQuery(document).on('change', '.variations select', function() {
        var selectID = jQuery(this).attr('id'),
            selectedAttributte = jQuery(this).text(),
            selectedValue = jQuery(this).val(),
            CapitalValue = selectedValue.charAt(0).toUpperCase() + selectedValue.slice(1);
        console.log('Select id ' + selectID);
        console.log('Select attr ' + selectedAttributte);
        console.log('Selected value ' + selectedValue);

        jQuery('#js-selected-' + selectID).text(CapitalValue);
    });
    // Stamped text
    jQuery('.js-toggle-next').on('click', function(event) {
        jQuery(this).next('div').toggle('slow');
        jQuery(this).next('div').next('label').next('input').val('');
    });
    jQuery('.stamped-text-input').on('keyup', function() {
        if (!jQuery(this).val()) {
            jQuery('#js-stamped-text-selected-container').addClass('d-none');
            jQuery('#js-stamped-text-notice').addClass('d-none');
        } else {
            jQuery('#js-stamped-text-selected-container').removeClass('d-none');
            jQuery('#js-stamped-text-notice').removeClass('d-none');
            jQuery('#js-stamped-text-selected').text(jQuery(this).val());
            jQuery('#js-stamped-text-sniffer').val(jQuery(this).val());
        }
    });
   jQuery('[data-toggle="tooltip"]').tooltip()
        // TO-DO move add to cart to rigth side
        //jQuery('.single_variation_wrap').appendTo('#js-ad-to-cart');
        // Move price variation
    jQuery('.single_variation_wrap').on('change', function() {
        if (jQuery('form.variations_form').length !== 0) {
            var form = jQuery('form.variations_form'),
                variable_product_price = '';
            if (jQuery('.single_variation_wrap span.price span.amount').length !== 0) {
                if (jQuery('#summary .entry-summary p.price span.amount').text() !== variable_product_price) {
                    variable_product_price = jQuery('.single_variation_wrap span.price span.amount').html();
                    jQuery('#summary .entry-summary p.price').html('');
                    jQuery('#summary .entry-summary p.price').html(variable_product_price);
                }
            }
        }
    });

});
/**
 * jQuery 2.0+  REQUIRED
 * ==============================================
 * iOS9 'click', 'mousedown' and 'mouseup' fix
 * ---------------------------------------------
 * Include this script in your poject to fix 'click', 'mousedown' and 'mouseup' event
 * handling for $(window), $(document), $('body') and $('html'). By default iOS9 Safari is
 * suppressing those events in some situations and without some magic they can't be rely on.
 * This fix is blocking native event handlers from firing
 * (in some rare cases event will reach it's destination)
 * and it handles native event handlers basing on 'touchstart' and 'touchend' event.
 * ---------------------------------------------
 * Use at your own risk
 */
(function($) {
    $(document).ready(function() {

        if (typeof navigator.userAgent == 'undefined' || !navigator.userAgent.match(/(iPad|iPhone|iPod)/i)) {
            return;
        }

        var EVENT_NAMESPACE = 'IOS9FIX';
        var MAX_DOM_DEPTH = 100;

        /**
         * Suppress event for $object.
         * @param $object
         * @param eventType
         */
        var blockEventFor = function($object, eventType) {
            var eventQueue, eventRepo = new Array();

            if ($._data($object.get(0), "events") !== undefined) {
                eventQueue = $._data($object.get(0), "events")[eventType];
            }

            if (eventQueue !== undefined) {
                for (var i = 0; i < eventQueue.length; i++) {
                    eventRepo.push({
                        handler: eventQueue[i].handler,
                        selector: eventQueue[i].selector,
                        namespace: eventQueue[i].namespace
                    });
                }

                $object.off(eventType);
            }

            $object.on(eventType + '.' + EVENT_NAMESPACE, '*', function(event) {
                event.stopImmediatePropagation();
            });

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

                var _eventType = eventRepo[i].namespace ?
                    eventType + '.' + eventRepo[i].namespace :
                    eventType;

                $object.on(_eventType, eventRepo[i].selector, eventRepo[i].handler);
            }
        };


        var executeMockedEventHandlers = function($object, mockedEventType, originalEvent) {
            /** Let's say touch is mouse left button (by default touch event has .which === 0) */
            originalEvent.which = 1;

            var mockedEventQueue, $target = $(originalEvent.target);

            if ($._data($object.get(0), "events") !== undefined) {
                mockedEventQueue = $._data($object.get(0), "events")[mockedEventType];
            }

            /** No event-handlers for event of such type */
            if (mockedEventQueue === undefined) {
                return false;
            }


            for (var preventEndlessLoop = 0; preventEndlessLoop < MAX_DOM_DEPTH; preventEndlessLoop++) {

                /** END THE LOOP */
                if ($target.length == 0) {
                    break;
                }

                /** EXECUTE MOCKED EVENT HANDLERS */
                for (var i = 0; i < mockedEventQueue.length; i++) {

                    // Skip eventHandler used to block originalEvent for mockedEvent
                    if (mockedEventQueue[i].namespace === EVENT_NAMESPACE) {
                        continue;
                    }

                    if (mockedEventQueue[i].selector === undefined) {
                        // Skip $object level eventHandlers until current DOM level is $object level
                        if (!$target.is($object[0])) {
                            continue;
                        }
                    } else {
                        // Skip eventHandlers not meant for current DOM level
                        if (!$target.is(mockedEventQueue[i].selector)) {
                            continue;
                        }
                    }

                    // Execute handler for current DOM level
                    if (mockedEventQueue[i].handler.call($target[0], originalEvent) === false) {
                        originalEvent.stopImmediatePropagation();
                    }

                    // Check for stopImmediatePropagation() */
                    if (originalEvent.isImmediatePropagationStopped()) {
                        break;
                    }
                }

                if (originalEvent.isPropagationStopped()) {
                    break;
                }

                /** Go to parent level */
                $target = $target.parent();
            }
        };



        /*****************************
         *      INITIALIZATION
         ****************************/

        /**
         * Go through objects and suppress all selected events.
         */
        $.each([$(document), $(window), $('body'), $('html')], function(objectIndex, $object) {
            $.each(['mousedown', 'click', 'mouseup'], function(eventIndex, eventType) {
                blockEventFor($object, eventType);
            });
        });




        /**
         * Init MouseDown-Mock for Dom $object
         * @param $object
         */
        var initMouseDownMock = function($object) {
            $object.on('touchstart', function(event) {
                executeMockedEventHandlers($object, 'mousedown', event);
            });
        };


        $.each([$(document), $(window), $('body'), $('html')], function(objectIndex, $object) {
            initMouseDownMock($object);
        });



        var initMouseUpMock = function($object) {
            $object.on('touchend', function(event) {
                executeMockedEventHandlers($object, 'mouseup', event);
            });
        };

        /**
         * Init MouseUp-Mock for objects...
         */
        $.each([$(document), $(window), $('body'), $('html')], function(objectIndex, $object) {
            initMouseUpMock($object);
        });


        /**
         * MOCK CLICK EVENT
         */

        /**
         * Init Click-Mock for Dom $object
         * @param $object
         */
        var initClickMock = function($object) {
            var clickCancelationTimer, isClick, cursorX, cursorY, target;

            $object.on('touchstart', function(event) {
                isClick = true;

                cursorX = event.originalEvent.touches[0].pageX;
                cursorY = event.originalEvent.touches[0].pageY;
                target = event.target;

                /** Click Timeout */
                clickCancelationTimer = setTimeout(function() {
                    isClick = false;
                }, 300);
            });

            /** moved more than 10 px away from starting position */
            $object.on('touchmove', function(event) {
                if (Math.abs(cursorX - event.originalEvent.touches[0].pageX) > 10 || Math.abs(cursorY - event.originalEvent.touches[0].pageY) > 10) {
                    isClick = false;
                }
            });

            $object.on('touchend', function(event) {
                clearTimeout(clickCancelationTimer);

                if (isClick) {
                    executeMockedEventHandlers($object, 'click', event);
                }
            });
        };

        /**
         * Init Click-Mock for objects...
         */
        $.each([$(document), $(window), $('body'), $('html')], function(objectIndex, $object) {
            initClickMock($object);
        });
    });
})(jQuery);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...