2016-04-26 87 views
1

僅當內部div高度大於外部div高度時,我需要通過敲除自定義綁定處理程序調用一個外部滾動函數。使用我的自定義函數敲除自定義綁定

我怎樣才能實現這與我的自定義代碼,每次。

HTML代碼:

<div class="ModifiedNotesListSection" style="height:300px;"> 
    <div class="Innerdiv" data-bind="EnscrollActive:{}">some dynamiic Content</div> 
</div> 

淘汰賽結合是:

ko.bindingHandlers.EnscrollActive = { 
      init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { 
       var ActualHeight = $(element).height(); 
       var ParentHeight = $(element).parents(".ModifiedNotesListSection").height(); 

        if (ActualHeight > ParentHeight) { 
         $(element).parents(".ModifiedNotesListSection").enscroll({ 
          verticalTrackClass: 'track4', 
          verticalHandleClass: 'handle4', 
          minScrollbarLength: 28 
         }); 
        } 
      } 
     }; 

注意:除了這個enscroll方法,你可以寫任何JQuery的加我,如果條件裏面類的方法。

+0

您需要每次更改任何div元素的高度時執行自定義綁定,對嗎? – elbecita

+0

@elbecita:是沒錯。 – Rayudu

+0

什麼導致元素的高度改變? – Tomalak

回答

0

最後,如果內部div的高度大於外部div的高度,您最終需要跟蹤div元素的高度變化並執行一些操作。 每當div元素高度發生變化時,都會通知「醜陋」部分,而淘汰賽對此沒有開箱即用的解決方案。 。:(

你是要去需要編寫一些跟蹤DOM元素的高度,每X時間檢查如何做到這一點這些問題的答案:https://stackoverflow.com/a/9628472/4067893

然後,您可以

  • 在該代碼中直接執行您的enscroll fn,而無需自定義裝訂綁定
  • 或使用自定義綁定:將檢查自定義綁定init fn中div元素的高度的代碼放在該代碼中,或者使用可觀察的昌每次div元素的高度發生變化並將其發送到綁定(data-bind="EnscrollActive: yourObservable")。在最後一種情況下,您需要使用自定義綁定的update fn。

我希望它有幫助。