function checked(sel){
if ($(sel).is(":checked")){
if ($(sel).is(":disabled")) return false;
else return true;
}
else return false;
}
Dazu brauchst du jQuery? Wenn du es performant haben willst, kannst du diese Aufgabe auch ohne "syntactic sugar" erledigen.
Was steht bei dir in sel drin? Am performantesten sind ID-Selektoren. Wenn deine Checkbox eine ID hat (macht Sinn z.B. wegen <label>), dann ist $('#id') sehr schnell.
Ohne Bibliothek (mit Ansprechen des Elements über eine ID) könnte man schreiben:
function checked (id)
var checkbox = document.getElementById(id);
if (!checkbox) return false;
return checkbox.http://de.selfhtml.org/javascript/objekte/elements.htm#checked@title=checked && !checkbox.http://de.selfhtml.org/javascript/objekte/elements.htm#disabled@title=disabled;
}
Sind verschachtelte Funktionsaufrufe den so verkehrt?
.is() ist für so etwas Unsinn, weil es die Selektor-Engine anwirft, obwohl du nur ein paar Objekteigenschaften abfragen willst. .attr() reicht hier aus. Außerdem sollte man das Suchen des Elements nicht zweimal durchführen, sondern das Ergebnis von $() (das jQuery-Objekt mit dem Knoten-Set) zwischenspeichern:
function checked (sel) {
var el = $(sel);
return el.attr('checked') && !el.attr('disabled');
}