Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не посноянно, но через некоторое время перестает работа скрипт (https://javascript.ru/forum/misc/57773-ne-posnoyanno-no-cherez-nekotoroe-vremya-perestaet-rabota-skript.html)

pochtdim 19.08.2015 11:19

Не посноянно, но через некоторое время перестает работа скрипт
 
Написал вот такой скриптик для зум эффекта

var lisImageZoom = {
    JQ_IMG_IND: '.img-responsive',
    JQ_IMG_WRAPPER_IND: '.product-image-container',
    JQ_HOVER_IND: '.product_list li',
    bufWidth: 0,
    bufHeght: 0,
    init: function(){
        this.bind();
    },
    bind: function(){
        var self = this;
        $(this.JQ_HOVER_IND).live('mouseenter', function(){
            self.bufWidth = self.getImageWidth(this);
            self.bufHeght = self.getImageHeight(this);
            $(self.JQ_IMG_WRAPPER_IND, this).width(self.bufWidth);
            $(self.JQ_IMG_WRAPPER_IND, this).height(self.bufHeght);
            $(self.JQ_IMG_IND, this).css({
                'transition': 'all 1s ease 0s',
                'max-width': self.bufWidth*1.2 + 'px',
                'width': self.bufWidth*1.2 + 'px',
                'margin': '-'+self.bufWidth*0.1 + 'px'
            });
        });
        $(this.JQ_HOVER_IND).live('mouseleave', function(){
            $(self.JQ_IMG_WRAPPER_IND, this).width('auto');
            $(self.JQ_IMG_WRAPPER_IND, this).height('auto');
            $(self.JQ_IMG_IND, this).css({
                'transition': 'none',
                'max-width': '100%',
                'width': 'auto',
                'margin': '0px'
            });
        });
    },
    getImageWidth: function($parent){
        return $(this.JQ_IMG_IND, $parent).width();
    },
    getImageHeight: function($parent){
        return $(this.JQ_IMG_IND, $parent).height();
    }
};
$(document).ready(function(){
    lisImageZoom.init();
});


При загрузке страницы все работает, но иногда(очень часто) через определенное время, или при переключении на другое приложение перестает работать. Ошибок в консоли нет. В чем может быть причина?

Еще заметил, что перестает работать автопрокрутка в bxslider

рони 19.08.2015 13:16

Цитата:

Сообщение от pochtdim
live

может причина в устаревшей jQuery

pochtdim 19.08.2015 14:34

Цитата:

Сообщение от рони (Сообщение 384784)
может причина в устаревшей jQuery

jQuery v1.11.0

Раньше такого не замечал. Циклов нет. Память в норме. Ошибок нет. А проблема есть. Чем можно еще отмониторить? Причем проблема не регулярная а переодическая и во всех браузерах. IE, FF, CHR, Safary

рони 19.08.2015 14:49

pochtdim,
в картинках не проставлен размер и вы используите устаревшую jQuery - писать версию ненадо надо править код с live на on

pochtdim 19.08.2015 14:56

спасибо, только хотел написать, что on помогло)

Если бы в картинках был проставлен размер, то этот скрипт не нужен все через css. А лив нужен так как ajax( счас буду дописывать обработчик.

А не вкурсе от чего косяк. Ведь изначально работает.

рони 19.08.2015 15:08

pochtdim,
если всё работает но интересно надо гуглить косяки live :)
Цитата:

Сообщение от pochtdim
А лив нужен так как ajax

ненужен
потому что есть on -- 'mouseenter' ставят на обьект который есть всегда -- пусть он следит за тем на какие элементы внутри него навели
$(parent).on('mouseenter', 'элемент или селектор картинки ', function() {

})

pochtdim 19.08.2015 15:23

Цитата:

Сообщение от рони (Сообщение 384809)
если всё работает но интересно надо гуглить косяки live :)

Гуглю) и не минимизированый смотрю мож что пойму)
Цитата:

Сообщение от рони (Сообщение 384809)
потому что есть on -- 'mouseenter' ставят на обьект который есть всегда -- пусть он следит за тем на какие элементы внутри него навели

Это еще доп обработчик писать:-/ , проще еще раз инициализировать при новом состоянии DOM)

рони 19.08.2015 15:29

Цитата:

Сообщение от pochtdim
проще еще раз инициализировать при новом состоянии DOM

можно и так


Часовой пояс GMT +3, время: 06:21.