Не работает вызов jquery функции с помощью onChange
Не работает вызов функции с помощью onChange="calculate()". В консоли никаких ошибок вообще нет. До того как добавил консрукцию jQuery(document).ready(function($) выдавало $ is not a function
jQuery(document).ready(function($) {
function calculate(){
//тут код функции
}
})
Ответы (2 шт):
Можете обращаться по классу или по id элемента.
В функцию либо передавайте параметр, либо оставляйте пустым.
Не стоит передавать символ $
Пример, как это работает:
$('#bum').on('click', function () {
function calculate(){
//тут код функции
}
console.log('123');
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="bum">Парам Пам Пам</div>
За неимением подробностей в тексте вопроса, побробуем телепатию. Итак: сначала ругалось на $, потом просто не стало вызываться.
Пока вывод такой: jQuery подключен c noConflict() (Wordpress?). В функции calculate() есть вызовы методов $.
Как решить
Малой кровью:
- Убираем
jQuery(document).ready(function ($) {}) - В начало фнукции
calculate()пишемlet $ = jQuery;(илиvar $ = jQuery;если браузер очень старый)
Правильным способом:
- Оставляем
jQuery(document).ready(function ($) {})(можно написать корочеjQuery(function($) {})) - Устанавливаем обработчик через
$(селектор).on('change', calculate);. Эта строка должна быть после определения функцииcalculate().
Нужно еще учитывать, вы устанавливаете обработчик на элементе, который постоянно присутствует на странице или появляется там как результат других функций. В первом случае указанные изменения должны помочь. Во втором случае правильный способ потребует установки обработчика после появления элемента на странице