[英]Need help changing jquery to javascript for an on change function
我正在尝试将一些 jQuery 代码更改为纯 JS 以进行呼叫 function。我不断收到以下错误 - 无法在“EventTarget”上执行“addEventListener”:参数 2 不是“Object”类型。
老的
$(document).on('change', '.js-variant-radio', onVariantRadioChange);
新的
document.querySelector('.js-variant-radio').addEventListener("change", onVariantRadioChange);
完整的代码块在这里
(function(){
//START QUANTITY INPUT VALIDATION FUNCTION
let
onVariantRadioChange = function(event) {
let
$radio = document.querySelector(this),
$form = $radio.closest('form'),
max = $radio.attr('data-inventory-quantity'),
$quantity = $form.querySelector('.js-quantity-field'),
$addToCartButton = $form.querySelector('.add-to-cart-button');
if($addToCartButton.prop('disabled') === true) {
$addToCartButton.prop('disabled', false);
}
$quantity.attr('max', max);
if (parseInt($quantity.value) > max) {
$quantity.val(max).change();
}
};
//END QUANTITY INPUT VALIDATION FUNCTION
})();
这是您在 vanillaJS 中的代码。 我唯一没有做的就是模仿附加的change()
触发器
document.addEventListener('DOMContentLoaded', () => { let onVariantRadioChange = function(event) { let $radio = event.target, $form = $radio.closest('form'), max = $radio.dataset['inventory-quantity'], $quantity = $form.querySelector('.js-quantity-field'), $addToCartButton = $form.querySelector('.add-to-cart-button'); if ($addToCartButton.getAttribute('disabled')) { $addToCartButton.removeAttribute('disabled'); } $quantity.setAttribute('max', max); if (parseInt($quantity.value) > max) { $quantity.value = max; } }; document.querySelectorAll('.js-variant-radio').foreach(el => el.addEventListener("change", onVariantRadioChange)); })
您仍在使用 jQuery 添加事件侦听器。尝试将其更改为:
const jsVariantRadio = document.getElementsByClassName('.js-variant-radio')[0];
jsVariantRadio.addEventListener('change', onVariantRadioChange);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.