Próbuję dodać klasę do elementu za pomocą Knockout.js w zależności od tego, czy pole wyboru podrzędnego jest zaznaczone, czy nie. Aby to zrobić, próbuję przekazać this
jako argument do mojej funkcji. Obecnie moja skrócona struktura DOM jest następujący:Jak przekazać bieżący element do funkcji JavaScript w powiązaniu Knockout.js?
<tr data-bind="css: { selected: isRowChecked(this) }">
<td><label><input type="checkbox"></label></td>
</tr>
mój isRowChecked
funkcja ta (używam jQuery zlokalizować wejście):
function isRowChecked(elem) {
var checkbox = $(elem).find('input[type="checkbox"]');
return checkbox.checked;
}
Jednak gdybym console.log
elem
wszystko ja get to globalny obiekt okna.
Nie jest możliwe użycie jQuery do rozwiązania tego problemu w całości, ponieważ projekt, nad którym pracuję, już prawie całkowicie wykorzystuje nokaut. Jakieś pomysły?
Proszę nie używać jQuery w swoim ViewModels KO! Powinieneś użyć obserwowalnych i sprawdzonego powiązania zamiast śledzić, kiedy zaznaczone jest pole wyboru: http://jsfiddle.net/eqoryb6v/ – nemesv
@ saturesv, ok, to jest pomocne, ale mam wiele wierszy, każdy z jednym polem wyboru. Korzystając z Twojej metody, gdy zaznaczę jedno pole wyboru, * wszystkie * wiersze i pola wyboru są podświetlone. http://jsfiddle.net/eqoryb6v/1/ – ReactingToAngularVues