Unable to click/touch event on sprite

Hi, i am new in unity development and i am developing a card game on unity. My question is how to add click event on each card. I have added 52 cards dynamically from Prefabs, index like 0…51. How to determine which card is clicked. OnMouseDown() is working but how to determine for which card its fired.

void AddCard(Vector3 position, int cardIndex, int positionalIndex)
{

	if (fetchedCards.ContainsKey (cardIndex)) 
	{
		if (!faceUp) 
		{
			CardModel model = fetchedCards [cardIndex].Card.GetComponent<CardModel> ();
			model.ToggleFace (fetchedCards [cardIndex].IsFaceUp);
		}

		return;
	}
		
	GameObject cardCopy = (GameObject)Instantiate (cardPrefab);

	//Debug.Log ("Prefab Name " + cardCopy.GetComponent<Button>().name);
	//cardCopy.transform.SetParent(ParentPanel, false);
	//cardCopy.transform.localScale = new Vector3(1, 1, 1);

	//Button tempButton = cardCopy.GetComponent<Button>();
	//UnityEngine.Events.UnityAction action1 = () => { this.btnClicked("testarg"); };
	//tempButton.onClick.AddListener(action1);
	//tempButton.onClick.AddListener((delegate { OnClickedButton(cardIndex);}));
	//tempButton.onClick.AddListener(() => OnClickedButton(cardIndex));
	//tempButton.GetComponentInChildren<Text>().text = "Button Numero " + cardIndex.ToString ();
	/*tempButton.onClick.AddListener(() =>
	{
		Debug.Log("IT WORKS");
		// Just handle the button clikc inside here
	});*/
	
	cardCopy.transform.position = position;

	CardModel cardModel = cardCopy.GetComponent<CardModel> ();
	cardModel.cardIndex = cardIndex;

	cardModel.ToggleFace (faceUp);

	SpriteRenderer spriteRenderer = cardCopy.GetComponent<SpriteRenderer> ();

	if (reverseLayerOrder) 
	{
		spriteRenderer.sortingOrder = 51 - positionalIndex;
	}

	else
	{
		spriteRenderer.sortingOrder = positionalIndex;
	}

	fetchedCards.Add (cardIndex, new CardView(cardCopy));
	//Debug.Log("Hand Value = " + deck.HandValue ());
}

I assume that your cards have a Button component.

// card is instantiated...
CardModel cardModel = cardCopy.getComponent<CardModel>();
// cardmodel is initialized...
cardCopy.getComponent<Button>().onclick.AddListener(() => DoSomethingWithCard(cardModel));

//.....

void DoSomethingWithCard(CardModel cardModel)
{
  Debug.Log(cardModel.index);
  // Your code here...
}