>  Q&A  >  본문

javascript - 我写了两个jquery插件,经常导致Chrome崩溃,能帮我分析下么?

我写了两个jquery插件,整合yii framework的ar验证使用,经常导致Chrome崩溃,请大家帮我分析一下原因,谢谢!

 /**
  * Limiter plugin
  */
 ;(function($){

    $.fn.limiter = function(options) {
        var defaults = {
            max: 21,
            tips : null,
            error : null,
            overflow : 'overflow'
        };

        var args = $.extend(defaults, options);

        this.each(function() {
            var me = $(this);
            me.on('keyup', function() {
                var lengthCurrent = $(this).val().length;
                if (args.error != null) {
                    if (lengthCurrent > args.max) {
                        args.error.addClass(args.overflow);
                    } else {
                        args.error.removeClass(args.overflow);
                    }
                }

                var lengthOver = args.max - lengthCurrent;

                if (lengthOver < 0) {
                    lengthOver = 0;
                }

                if (args.tips != null) {
                    args.tips.css('display', 'block').html("您还能输入" + lengthOver + "个字");
                }
            });
        });

        return this;
    };

 })(jQuery);

 /**
  * Numeric plugin
  */

 ;(function($) {

    $.fn.numeric = function(options) {
        var defaults = {
            default: 0,
            allowNegative: true,
        };

        var args = $.extend(defaults, options);

        this.each(function(){
            me = $(this);
            me.on('blur', function() {
                current = $(this);
                var value = $(this).val();
                if (isNaN(value)) {
                    current.val(args.default);
                }
                if (args.allowNegative == false) {
                    if (value < 0) {
                        current.val(args.default);
                    }
                }
            });
        });
        return this;
    };

 })(jQuery);
大家讲道理大家讲道理2728일 전418

모든 응답(3)나는 대답할 것이다

  • 伊谢尔伦

    伊谢尔伦2017-04-10 14:35:11

    导致崩溃的原因一般都是内存泄漏,但是我看了下代码,又没明显的bug,你单独拿出来测试一下,确定是什么原因导致的。

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 14:35:11

    keyup建议加上节流控制

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-10 14:35:11

    试了一下代码,有意思,看来以后写插件更好玩,但我也没见 CPU 飙升,所以,应该不是这是这两个插件代码的问题,你看下你说的 yii 的 ar 吧。

    <style>
    .tip {
        padding: 10px 20px;
        border: 1px solid gray;
    }
    .err.overflow {
        border-color: red;
    }
    .text, .num {
        padding: 10px 20px;
    }
    </style>
    
    
    
    <p class="tip err">&nbsp;</p>
    
    
    <input type="text" class="text" />
    
    
    <hr>
    
    
    <input type="text" class="num">
    
    
    
    <script>
    $(document).ready(function() {
    
        $('.text').limiter({
            max: 21,
            tips : $('.tip'),
            error : $('.err'),
            overflow : 'overflow'
        });
    
        $('.num').numeric({
            default: 2,
            allowNegative: false
        });
    });
    </script>
    
    
    

    회신하다
    0
  • 취소회신하다