2014-04-04 45 views
0

我想創建一個jquery構建它的功能,這將允許我更改maxHeight或從一個元素或一組元素中檢索maxHeight。jQuery擴展函數根據條件保留鏈接

將maxHeight設置爲:$('.element-class').maxHeight(500);效果很好。 然而,當我不傳遞maxHeight()的參數我想返回元素的高度,而不是保存的jQuery chainability:

來源:

(function($) { 

    // jQuery plugin definition 
    $.fn.maxHeight = function() { 

     var params = arguments; 
     var $this = this; 
     console.log(params); 
     this.each(function() { 

      var $t = $(this); 

      if (params.length > 0) { 
       if (params[0] == 'none'){ 
        $t.get(0).style.maxHeight = 'none'; 
       } else { 
        $t.get(0).style.maxHeight = params[0] + 'px'; 
       } 
       return $t; 
      } else { 
       var h = (($t.get(0).style.maxHeight && $t.get(0).style.maxHeight != '') ? parseInt($t.get(0).style.maxHeight) : 0); 
       console.log(h); 
       return h; 
      } 

     }); 

     return this; 
    }; 

})(jQuery); 

回答

0

我認爲你必須做一個回調函數,沒有時間來測試它,但試試這個:

(function($) { 

    // jQuery plugin definition 
    $.fn.maxHeight = function(a, callback) { 

     var $this = this; 
     this.each(function() { 

      var $t = $(this); 

      if (!a) { 
        $t.get(0).style.maxHeight = 'none'; 
       } else { 
        $t.get(0).style.maxHeight = a + 'px'; 
       } 
       callback($t); 
      } else { 
       var h = (($t.get(0).style.maxHeight && $t.get(0).style.maxHeight != '') ? parseInt($t.get(0).style.maxHeight) : 0); 
       callback(h); 
      } 

     }); 
    }; 

})(jQuery); 

,然後做這樣的事情:

$('.element-class').maxHeight(500 , function(result){ 


// use your result or not 

// Want to chain 
return result; 

}); 
+0

if/else不是很正確,我看,但你解決了我看到;) – Mike