2009-09-28 17 views

Odpowiedz

276

można użyć pseudo-selektor :checkbox z wezwaniem do is funkcji jQuery:

$('#myinput').is(':checkbox') 
+1

Jest to metoda, z której zawsze korzystam. –

+0

Naprawdę nie można uzyskać prostsze niż to. – KyleFarris

+8

Po co używać tego silnika selektora? To zupełnie niepotrzebne. –

8
$("#myinput").attr('type') == 'checkbox' 
22
>>> a=$("#communitymode")[0] 
<input id="communitymode" type="checkbox" name="communitymode"> 
>>> a.type 
"checkbox" 

Albo, bardziej w stylu jQuery:

$("#myinput").attr('type') == 'checkbox' 
+0

całkowicie poprawny. Nie najprostszy. – KyleFarris

+6

Zapisuje przy użyciu silnika selektora jQuery, którego użycie jest tutaj całkowicie niewłaściwe. Pierwszy wariant jest tym lepszy, ponieważ unika jakiejkolwiek możliwości pomieszania funkcji 'attr()' przez jQuery'a. –

+3

@ Tim Down ma rację - powinieneś zmienić 'attr()' na 'prop()', afaik. 'attr()' nie zawsze pobiera "prawdziwą" wartość atrybutu (tj. sprawdzoną lub nie) z przeglądarki. Szczerze mówiąc nie wiem, dlaczego tak się dzieje, ale nauczyłem się tego już jakiś czas temu. – thekingoftruth

2

użytku ta funkcja:

function is_checkbox(selector) { 
    var $result = $(selector); 
    return $result[0] && $result[0].type === 'checkbox'; 
}; 

Albo ten plugin jQuery:

$.fn.is_checkbox = function() { return this.is(':checkbox'); }; 
6

Rozwiązanie non-jQuery jest bardzo podobny do rozwiązania jQuery:

document.querySelector('#myinput').getAttribute('type') === 'checkbox'