Как заблокировать выполнение функции при передаче ее в качестве параметра?
Сейчас у вас передаётся не функция, а результат её вызова:hideContent( showContent( elements_id[position] ));
Вот так можно передать саму функцию, но без параметров:hideContent( showContent );
«Привязать» к функции контекст и параметры можно  через bind():showContent.bind( null, elements_id[position])
Это создаст копию функции, к которой уже привязан null в качестве контекст this и elements_id[position] в качестве первого параметра. Можно было бы назначить  эту функцию переменной: var myFunc = showContent.bind( null, elements_id[position]);
и потом передать эту переменную для выполнения в качестве callback.
Передать функцию с параметрами в качестве параметра:hideContent( showContent.bind( null, elements_id[position] ));
Скобки уберите в вызове функции showContent, данные передайте вторым параметром и уже внутри hideContent вызывайте, передавая данные аргументом