Come posso trovare tutte le caselle di controllo, che sono selezionate e non disabilitato?Selettore jQuery per tutte le caselle di controllo che non sono disabilitate
risposta
$('input[type="checkbox"]').filter(function() {
return !this.disabled && this.checked;
})
Come così:
$("input[type='checkbox']:checked").not(":disabled")...
Questo trova campi che sono input
s, con il tipo di checkbox
, che vengono controllati, e non disabili. Se questo non funziona, è necessario utilizzare un controllo di attributo:
$("input[type='checkbox']:checked").not("[disabled]")...
O, come @lonesomeday acutamente sottolineato, è possibile combinare in un selettore:
$("input[type='checkbox']:checked:not(:disabled)")...
ho messo insieme un proof-of-concept in this fiddle.
Non ha senso usare due selettori separati qui. Si può anche fare 'input [type =" checkbox "]: checked: not ([disabled])'. – lonesomeday
È possibile utilizzare questo selettore ..
$('input[type=checkbox]:checked:not(:disabled)')
controllare questo FIDDLE
come su $("input[type='checkbox']:checked:enabled")
?
Sì, ma perdere ': checked' dal selettore e rendere la funzione di filtro'! This.disabled && this.checked' migliorerebbe le prestazioni molto . – lonesomeday
perché esattamente? Penserei che il motore di selezione lo farebbe più veloce della mia funzione. Tuttavia è più facile da capire, modifico la mia risposta. – Hoffmann
Poiché i browser non comprendono ': checked', quindi jQuery deve farlo da solo, che è lento. Aggiungere un controllo booleano extra è molto più veloce. – lonesomeday