Oto mój kod:
$("#product1 :checkbox").click(function(){
$(this)
.closest('tr') // Find the parent row.
.find(":input[type='text']") // Find text elements in that row.
.attr('disabled',false).toggleClass('disabled') // Enable them.
.end() // Go back to the row.
.siblings() // Get its siblings
.find(":input[type='text']") // Find text elements in those rows.
.attr('disabled',true).removeClass('disabled'); // Disable them.
});
Jak przełączać .attr('disabled',false);
?
Nie mogę znaleźć tego w Google.
$("input").get(0).disabled = isFalse;
// jsfiddle.net/uAfhjOdpowiedzi:
.prop()
Sposób przyjmuje dwa argumentyWięc w tym przypadku użyłem funkcji, która dostarczyła mi indeks (i) i bieżącą wartość (v), a następnie zwróciłem przeciwieństwo bieżącej wartości, więc stan właściwości jest odwrócony.
źródło
i
iv
?$('#el').prop('disabled', (i, v) => !v);
Myślę, że aby uzyskać pełną porównywalność przeglądarki,
disabled
należy ustawić wartośćdisabled
lub usunąć!Oto mała wtyczka, którą właśnie stworzyłem:
Przykładowy link .
EDYCJA: zaktualizowano przykładowy link / kod, aby zachować łańcuchowość!
EDYCJA 2:
Na podstawie komentarza @lonesomeday, oto ulepszona wersja:
źródło
$.fn.toggleDisabled = function(){ return this.each(function(){ this.disabled = !this.disabled; });}
to wszystko czego potrzebujesz.disabled
atrybutu. W każdym razie, jeśli możesz potwierdzić, że jest to rozwiązanie dla różnych przeglądarek .. Zaktualizuję moją odpowiedź.prop
jest lepszą metodą od 1.6, jak powiedział Arne.źródło
Kolejna prosta opcja, która aktualizuje się po kliknięciu pola wyboru.
HTML:
jQuery:
W akcji: link
źródło
if
bloku z$('#item').prop('disabled', this.checked);
Jakiś czas później, dzięki @arne, stworzyłem tę podobną małą funkcję do obsługi, gdzie wejście powinno być wyłączone ORAZ ukryte lub włączone ORAZ pokazane:
Następnie obiekt jQuery (taki jak $ ('input [name = "something"]')) jest po prostu przełączany za pomocą:
źródło
Jest to dość proste dzięki składni wywołania zwrotnego
attr
:źródło