2012-12-20 12 views
7

Witam Mam następujący kod w moim zdaniem:Jak zastosować efekt jQuery elementu utworzonego przez Knockout.js

 <div data-bind="foreach: Elements"> 
      <div data-bind="attr:{id: id}"> 
       <img data-bind="attr:{src: ImageSource}" /> 
       <p data-bind="text: Name"></p> 
      </div> 
     </div> 

Ale dla każdego nowego elementu Chcę dodać EFFET jQuery jak:

 $("#draggable").draggable(); 

Czy istnieje sposób na subskrypcję wydarzenia, które wystąpi po dodaniu elementu do tej listy?

+0

Możesz rzucić okiem na użycie [MutationObserver] (https://developer.mozilla.org/en-US/docs/DOM/MutationObserver), jeśli chcesz, aby subskrypcja zdarzenia była oddzielona od nokautu. 'MutationObserver zapewnia programistom sposób reagowania na zmiany w DOM. Został zaprojektowany jako zamiennik zdarzeń mutacji zdefiniowanych w specyfikacji zdarzeń DOM3. " – Nope

Odpowiedz

10

Najlepszym sposobem na to jest użycie niestandardowych powiązań.

ko.bindingHandlers.draggable= { 
    init: function(element, valueAccessor) { 
     $(element).draggable(); 
    } 
}; 

    <div data-bind="foreach: Elements"> 
     <div data-bind="attr:{id: id}, draggable: {}"> 
      <img data-bind="attr:{src: ImageSource}" /> 
      <p data-bind="text: Name"></p> 
     </div> 
    </div> 

Przeczytaj więcej na ten temat w dokumentacji: http://knockoutjs.com/documentation/custom-bindings.html.

+0

OMG! Wiele, wiele, wiele dzięki! – Eugene

Powiązane problemy