Как передать функцию в качестве параметра в JavaScript - PullRequest
0 голосов
/ 18 декабря 2011

У меня есть всплывающее диалоговое окно, и я пытаюсь сделать его настолько динамичным, насколько я могу, чтобы я мог отправить ему любую функцию, какую захочу.Я хотел создать функцию обратного вызова, чтобы я мог передать любую функцию, какую захочу, и она будет делать с моим объектом все, что мне нужно (в этом примере просто напечатать что-нибудь для проверки.

вот что происходит, когда всплывающее окновызывается:

function DisplayPopUp(obj, callback) {


    //On Action Clicked
    $('#actionButton').click(function(e){
       e.preventDefault();
       callback(Obj);
    });
}

А вот функция, которая активирует функцию PopUp

$('.delete').click(function(){
    var obj="something something";
    DisplayPopUp(obj,function(){console.log('going to delete');});
});

Почему-то это не работает, и я получаю из firebug эту ошибку:

Obj is not defined

Очевидно, что я не передаю свою функцию правильно - как мне это сделать?

Ответы [ 4 ]

2 голосов
/ 18 декабря 2011

Вы звоните callback(Obj), но ваша переменная называется obj.Проверьте ваше дело.

1 голос
/ 18 декабря 2011

Я вижу несколько возможных проблем с этим кодом:

Во-первых, случай Obj неверен. Должно быть так:

function DisplayPopUp(obj, callback) {

    //On Action Clicked
    $('#actionButton').click(function(e){
       e.preventDefault();
       callback(obj);
    });
}

Но, во-вторых, я не думаю, что вы правильно используете обработчики событий. Вы вызываете DisplayPopup из обработчика кликов. Но в этом обработчике кликов вы устанавливаете другой обработчик кликов для другого объекта. Это действительно то, что вы хотите сделать? Если вы не оставили здесь кучу кода, который создает / уничтожает actionButton или отменяет привязку обработчиков кликов, вы можете легко получить несколько обработчиков кликов в #actionButton при каждом нажатии кнопки удаления.

1 голос
/ 18 декабря 2011

Ну, Obj это , а не определено.Это должно быть obj.

Первое, что вы должны сделать, когда получите сообщение об ошибке, это прочитать его.:)

1 голос
/ 18 декабря 2011

Когда вы вызываете обратный вызов в DisplayPopup(), передайте параметр obj, а не Obj.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...