Assuming by "hidden" you mean type="hidden"
ie:
<input type="hidden" name="foo" value="bar">
then you can use the attribute not equals selector to do this:
$("tr input:checkbox").click(function() {
var cb = $(this);
var tr = $(this).closest("tr");
if (cb.val()) {
tr.find("input[type!='hidden']").attr("disabled", true);
} else {
tr.find("input[type!='hidden']").removeAttr("disabled");
}
});
My general advice is avoid attribute selectors. They're slow. Give the relevant inputs (either the hidden ones or the not hidden ones) a class and then use that in the selectors.
If however you mean "hidden" as in "not visible" then use the :visible
selector:
$("tr input:checkbox").click(function() {
var cb = $(this);
var tr = $(this).closest("tr");
if (cb.val()) {
tr.find("input:visible").attr("disabled", true);
} else {
tr.find("input:visible").removeAttr("disabled");
}
});