1. 程式人生 > >jquery監聽div或其它元素改變 jquery resize 事件 出錯解決方案

jquery監聽div或其它元素改變 jquery resize 事件 出錯解決方案

        網上拷貝能人的下列程式碼:

  1. (function($, h, c) {  
  2.     var a = $([]), e = $.resize = $.extend($.resize, {}), i, k = "setTimeout", j = "resize", d = j  
  3.             + "-special-event", b = "delay", f = "throttleWindow";  
  4.     e[b] = 350;  
  5.     e[f] = true;  
  6.     $.event.special[j] = {  
  7.         setup : function
    () {  
  8.             if (!e[f] && this[k]) {  
  9.                 return false  
  10.             }  
  11.             var l = $(this);  
  12.             a = a.add(l);  
  13.             $.data(this, d, {  
  14.                 w : l.width(),  
  15.                 h : l.height()  
  16.             });  
  17.             if (a.length === 1) {  
  18.                 g()  
  19.             }  
  20.         },  
  21.         teardown : function() {  
  22.             if (!e[f] && this[k]) {  
  23.                 return false  
  24.             }  
  25.             var l = $(this);  
  26.             a = a.not(l);  
  27.             l.removeData(d);  
  28.             if (!a.length) {  
  29.                 clearTimeout(i)  
  30.             }  
  31.         },  
  32.         add : function(l) {  
  33.             if (!e[f] && this[k]) {  
  34.                 return false  
  35.             }  
  36.             var n;  
  37.             function m(s, o, p) {  
  38.                 var q = $(this), r = $.data(this, d);  
  39.                 r.w = o !== c ? o : q.width();  
  40.                 r.h = p !== c ? p : q.height();  
  41.                 n.apply(this, arguments)  
  42.             }  
  43.             if ($.isFunction(l)) {  
  44.                 n = l;  
  45.                 return m  
  46.             } else {  
  47.                 n = l.handler;  
  48.                 l.handler = m  
  49.             }  
  50.         }  
  51.     };  
  52.     function g() {  
  53.         i = h[k](function() {  
  54.             a.each(function() {  
  55.                 var n = $(this), m = n.width(), l = n.height(), o = $  
  56.                         .data(this, d);  
  57.                 if (m !== o.w || l !== o.h) {  
  58.                     n.trigger(j, [ o.w = m, o.h = l ])  
  59.                 }  
  60.             });  
  61.             g()  
  62.         }, e[b])  
  63.     }  
  64. })(jQuery, this);  

1 . 放入,聲明瞭jq的地方

2 . 可以放入方法裝好(在1的條件下也可以直接隨意放),更好的體現出邏輯:

var function名字 = function(){

上面拷貝的程式碼:

}

監聽呼叫,以及出錯時的處理:

  1.                 $("選擇器id,css...等等").on("resize ",function(event){
  2.                         console.log("阻止冒泡");  
  3.                         event.stopPropagation();
  4.                         console.log($(this).hight());//等等。。。
  5.                     });

js分號有調節格式的作用,-_-(ctrl+k+d)也可以調節格式