Quindi sto cercando di aggiungere una classe a un elemento utilizzando Knockout.js in base al fatto che una casella di controllo figlio sia selezionata o meno. Per fare ciò, sto cercando di passare this
come argomento alla mia funzione. Attualmente, la mia struttura DOM ridotta è la seguente:Come posso passare l'elemento corrente a una funzione Javascript in un binding Knockout.js?
<tr data-bind="css: { selected: isRowChecked(this) }">
<td><label><input type="checkbox"></label></td>
</tr>
Una mia funzione isRowChecked
è questo (sto usando jQuery per individuare l'ingresso):
function isRowChecked(elem) {
var checkbox = $(elem).find('input[type="checkbox"]');
return checkbox.checked;
}
Eppure, se mi console.log
elem
tutto quello che get è l'oggetto della finestra globale.
Non è possibile utilizzare jQuery per risolvere completamente questo problema poiché il progetto a cui sto lavorando utilizza già il knockout quasi esclusivamente. Qualche idea?
prega di non utilizzare jQuery nelle vostre ViewModels KO! Dovresti usare le osservabili e l'associazione verificata per tenere traccia quando la casella è selezionata: http://jsfiddle.net/eqoryb6v/ – nemesv
@nemesv, okay, è utile, ma ho più righe, ognuna con una casella di controllo. Usando il tuo metodo, quando seleziono una casella di controllo, * all * le righe e le caselle di controllo sono evidenziate. http://jsfiddle.net/eqoryb6v/1/ – ReactingToAngularVues