Your first sample query is closest to the correct syntax, but you use $('... input:checked').find() , which will look for the children of these flags (of which, of course, they won't be).
Therefore, you need to move the input:checked or even better :checkbox:checked , to exclude any radio objects in your .find so that you look in the container you need, and not in the :checkbox:checked list
jQuery("#" + panelInfo[0] + "_row_" + panelInfo[1]) .find(":checkbox:checked[id$=_chkPR], :checkbox:checked[id$=_chkPR_KD], :checkbox:checked[id$=_chkPR_KDA])");
Another way to express this could be:
jQuery("#" + panelInfo[0] + "_row_" + panelInfo[1]) .find('[id$=_chkPR], [id$=_chkPR_KD], [$=id_chkPR_KDA]') .filter(function() { return $(this).is(':checkbox:checked'); });
In the above code, you will find all the elements in the panel with the appropriate identifier and filter out the elements from the installed set that are checked.
You can also eliminate the need to use .find at all if you specify the context instead:
jQuery(":checkbox:checked[id$=_chkPR], :checkbox:checked[id$=_chkPR_KD], :checkbox:checked[id$=_chkPR_KDA])", document.getElementById(panelInfo[0] + "_row_" + panelInfo[1]));
source share