How to change the position of GameObjects with Unity Input.GetMouseButtonDown method?

I already know how to click on 3D Objects in the scene by using the Input.GetMouseButtonDown. I’m trying to change the 3D Object position by clicking on the object. I added a Box Collider in the object and I’m calling the following method.

void Update() {
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                foreach (GameObject child in floorTiles) {
                    BoxCollider box = child.GetComponentInChildren<BoxCollider>();
                   
                    if (hit.transform.name.Equals(box.name))
                    {
                       
                        handleOnMouseDown(hit.collider);
                    }
                }
            }
        }
    }

floorTiles is an array of GameObjects.

If I hit one of these objects the below function is called:

void handleOnMouseDown(Collider box) {
        GameObject parent = box.transform.parent.gameObject;
        Vector3 position = parent.transform.position;
       
        positionX.GetComponent<TextMeshProUGUI>().text = position.x.ToString();
       
        posXButtonPlus.GetComponent<Button>().onClick.AddListener(() => handleOnChangePosition("posx", parent));
    }

This works, however, when I click many objects, all the last objects clicked also keep changing their positions. How can I change one position per time?

I was creating a Listener on each click event. After fix this it worked as expected!