Как заблокировать выполнение функции при передаче ее в качестве параметра?

Есть функция:
var showContent = function(slide) {

    var slide = $(slide);
    var title = slide.attr('data-title');
    var content = slide.attr('data-content');

    $(titleContainer).html(title);
    $(contentContainer).html(content);
    $(titleContainer).animateCss('fadeInUp faster', function() {
      $(contentContainer).animateCss('fadeInUp faster');
    });
    if (debug) = console.log('Showing content');


  }

И другая:
var hideContent = function(callback) {
    $(titleContainer).animateCss('fadeOutDown faster',function(){

        $(contentContainer).animateCss('fadeOutDown faster',function(){
          if (debug) console.log('AnimationEnd');
          if (typeof callback === "function") callback();
        });

    });

  }


Мне нужно, чтобы функция showContent(slide) исполнилась на месте колбека в функции hideContent(), но при передаче ее в качестве параметра hideContent(showContent( elements_id[position] )); функция showContent() сразу же выполняется, как исправить этот момент? И какой раздел подучить, потому что в js документации найти этот момент я так и не смог.
  • Вопрос задан
  • 213 просмотров
Решения вопроса 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Сейчас у вас передаётся не функция, а результат её вызова:
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] ));
Ответ написан
Комментировать
danial72
@danial72
flutter dart.
Скобки уберите в вызове функции showContent, данные передайте вторым параметром и уже внутри hideContent вызывайте, передавая данные аргументом
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы