`bash`, `zsh` and `ksh93` are the shells that have a `disown` command. Of the three, `bash` is the only one that supports a `h` option. Without `-h` it emultates `zsh` behavior (remove from the job table), while with `-h` it emulates `ksh93` behavior (will not send it a SIGHUP upon exit, but doesn't remove it from the job table so you can still `bg` or `fg` or kill it).
You could emulate that behavior with zsh, by doing:
typeset -A nohup
trap 'disown %${(k)^nohup}' EXIT
trap 'for i (${(k)nohup}) (($+jobstate[i])) || unset "nohup[$i]"' CHLD
So the nohup associative array holds the list of jobs that are not to be sent a SIGHUP upon exit. So, instead of `disown -h %1`, you'd write `nohup[1]=`.
See also `setopt nohup` to not send SIGHUP to any job upon exit.