2016-06-09 2 views
0

У меня есть кнопка, на которой я хочу подключить прослушиватель событий. Мне также нужно передать дополнительный параметр url этой функции. Я читал о apply, и я делаю следующее:Как передать дополнительный параметр для обратного вызова обработки событий?

$('#list-button').on('click',postListing.apply([url])); 

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

+0

Лучше использовать анонимные функции в таких случаях. ''click', function (event) {myAwesomeFn (событие, собака, кошка, kill); }); ' – Tushar

+0

Проверьте функцию' .bind'. Также первым аргументом apply или call является контекст. Вы можете попробовать 'postListing.bind (this, url)' – Rajesh

+0

Вы можете использовать функцию связывания, подобную этой '$ ('# list-button'). On ('click', postListing.bind (this, url);' – Abiodun

ответ

3

Разница между затруднительным и позвонить/применять в том, что привязка не вызывает функцию сразу же, как он загружает данные с переменным при необходимости

Вы можете переформатировать код, чтобы он выглядит следующим образом

$('#list-button').on('click', postListing.bind(this, url)); 
0

Обнаружен путь. Это может быть сделано с помощью окончания:

var postListing = function(event, url){ 
     return function(){ 
       //Main functionality wrapped here 
     }; 
}; 

И настройка приемника событий остается прежним:

$('#list-button').on('click',postListing.apply([url]));