Thanks for the guidance. I did this and it half worked. Progress! :) I'm re-parenting the child to a parent that has the same size and anchors as its original parent. When it's re-parented though, it moves to the left side of the screen. When I add code to move it back to its original location, it ignores that code. No error, just ignored.
if CLICKED:
# ALL THIS WORKS
var parentOLD = get_node("Selection_Screen/characters")
var childMOVE = get_node("Selection_Screen/characters/heroA")
var parentNEW = get_node("Top_Parent/new_top")
parentOLD.remove_child(childMOVE)
parentNEW.add_child(childMOVE)
var childNEW = get_node("Top_Parent/new_top/heroA")
# THIS GETS IGNORED
childNEW.set_scale(Vector2(.9,.9))
childNEW.set_position(Vector2(260,28))
Again, it doesn't give any errors when executing any of the code. However, if I click to active the same code a second time, the re-parenting code throws a null warning as expect, and the childNEW is properly moved to the correct location. I thought about putting in a delay to run the movement code a fraction of a second later, but the player will still see the child in the wrong location for a split second and it'll look bad. How do I get around this wrinkle? Thanks again.