Функция прикреплена как обработчик кликов, вызываемый до щелчка

0

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

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

$('.legendItem').click(removeVariable);

Однако, чтобы удалить переменную из базовой структуры данных, removeVariable() нуждается в имени переменной. Я сохраняю это в атрибуте data в диапазоне .legendItem. Таким образом, я могу получить доступ к атрибуту с помощью $('.legendItem').data('keyword') Поскольку может быть много разных элементов .legendItem, я надеялся передать динамический атрибут data-keyword динамически функции removeVariable() для каждый щелкнул элемент.

Однако у меня возникают проблемы, когда я пытаюсь добавить эту передачу данных в обработчик кликов. Когда я добавляю "ключевое слово" в качестве параметра для removeVariable() и включаю:

$('.legendItem').click(removeVariable($(this).data('keyword')));

Когда я отлаживаю отладчик Chrome JS, функция removeVariable() вызывается вторым примером, но не первым. Поскольку обработчик кликов полагается на данные, которые не существуют на этом этапе сценария, он вызывает ошибку. Есть ли очевидные ошибки, с которыми я сталкиваюсь, или более эффективные способы такого рода динамических манипуляций?

  • 2
    скобки после ссылки на функцию вызывают эту ссылку сразу.
Теги:

1 ответ

5
Лучший ответ

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

$('.legendItem').click(function() {
    removeVariable($(this).data('keyword'));
});
  • 0
    Красиво, именно то, что было не так. Благодарю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню