Grałem około z knockout.js z jQuery i jestem bardzo nowy knockout.jsOdzyskiwanie elementu z jQuery wewnątrz imprezy pucharowej
moim przykładzie kodu i kod jest tutaj: http://jsfiddle.net/Ninjanoel/ADYN6/
Zasadniczo próbuję utworzyć ekran wprowadzania liczb loterii jako test mojej wiedzy, a teraz próbuję zweryfikować dane wejściowe w polu tekstowym, a następnie zastosować efekty specjalne do pola wprowadzania, jeśli [onBlur], tekst pole jest nieprawidłowe.
Mam "LotteryApp", z obserwowalną tablicą "Lines", z normalną tablicą [5] obserwowalnych ko, które służą jako moje dane wejściowe lub "Skrzynki numeryczne". Używam szablonu, aby wyświetlić każdą "Linię" i dodatkowy szablon wewnątrz, aby renderować "Skrzynki".
Chciałbym nazwać wtyczkę jQuery 'color fade' [kolor czerwony na bg] w polu tekstowym, jeśli dane wejściowe nie są poprawne. Ale w funkcję „onblur” stworzyłem, nie mogę znaleźć niczego w żadnym z argumentów przekazanych do funkcji, aby pomóc mi nazwać coś takiego myTextBox = jQuery(arguments.something)
, tak, że mogę zrobić coś takiego jQuery(myTextBox).colourFade()
<input type="text" data-bind="value:n, event:{blur: $parent.onBlur }, uniqueName:true, disable: $parent.isLD" class="lotteryNumber" maxlength="2"/>
jest kod w moim najgłębszym szablonie obsługującym moduł onBlur.
self.onBlur = function()...
to funkcja, którą chcę wywołać w zdarzeniu "rozmycie".
Mam świadomość, że jeśli używam niestandardowego wiązania, np. ko.bindingHandlers.myBinding
następnie "element" jest przekazywany bezpośrednio do wywołań "update" i "init", które mogę następnie użyć do wywołania jQuery (element) .colourFade(), ale jest to bardziej ćwiczenie w zrozumieniu, jak uzyskać dostęp do elementu przy użyciu standardowych wiązań zdarzeń, ponieważ mogę sobie wyobrazić, że będę go często potrzebował i nie chcę robić WSZYSTKIEGO w niestandardowym powiązaniu, a także z opcjami "init" i "update" w niestandardowym powiązaniu (według mojej wiedzy) , Nie sądzę, że te będą wystarczające (np. Co z "keyup"?), A mimo to niestandardowe wiązania wydają się być oparte na samym pliku ko.observable, a nie na samym zdarzeniu.
Podsumowanie:
podczas korzystania data-bind="event : {blur : myMethod}"
, jak mogę, wewnątrz myModel.myMethod
, chwyć elementu HTML, który utworzył wydarzenie.
Słodki, dzięki koleś! "alert (jQuery (event.target) .val());" zwraca wartość pola tekstowego, tak jak ja też tego potrzebowałem! Jestem pewien, że wcześniej wypróbowałem event.target, no cóż, dziękuję za zwięzłą odpowiedź! – Nnoel
Uwaga: event.target nie działa w IE. musisz użyć event.srcElement dla IE .. Tak więc powinieneś użyć czegoś takiego do obsługi wszystkich przeglądarek: var target = event.target || event.srcElement – portlandrock
@portlandrock: Edytowałem mój post, aby wskazać, że używa on obiektu zdarzenia jQuery, a nie tego samego bezpośrednio z przeglądarki. Jeśli jQuery jest na stronie, nokaut użyje funkcji obsługi zdarzeń jQuery, która znormalizuje właściwość [event.target] (http://api.jquery.com/event.target/), aby można było jej używać w dowolnej przeglądarce, której jQuery obsługuje. – Douglas