琦玉 发表于 2022-5-23 09:11:57

请问大佬如何避免重复添加addEventListener

我开始尝试用一个Boolean变量控制,行得通,但是网页一旦AJAX重载后,由于Boolean变量还是false,又不能addEventListener,所以一旦AJAX我写得脚本就失效,请问大佬有什么好方法?

李恒道 发表于 2022-5-23 09:37:30

AJAX重载不会影响变量呀
有没有例子看看

琦玉 发表于 2022-5-23 11:46:18

李恒道 发表于 2022-5-23 09:37
AJAX重载不会影响变量呀
有没有例子看看


let numI = true;
let inputblur =document.querySelector('#sales-sourceid-orderAddPage');
                  if (inputblur && numI){
                        // console.log('add');
                        inputblur.addEventListener("focusout", function(event) {
                            let customerInput = document.querySelector('#sales-customer-showid-orderAddPage a');
                            if (inputblur.value){
                              QueryCustomerOrder(customerInput.innerText,inputblur.value);
                            }
                        },true);
                        numI = false;
                  }

这个页面是由js生成的,页面有个保存按钮,点击保存后页面又会重新生成。
问题在于我加了numI 这个参数,页面重新生成后numI 还是false,绑不了事件监听;但是不用这个参数,就会重复添加事件监听

李恒道 发表于 2022-5-23 14:06:21

琦玉 发表于 2022-5-23 11:46
这个页面是由js生成的,页面有个保存按钮,点击保存后页面又会重新生成。
问题在于我加了numI 这个参数 ...

可以先尝试removeaddeventlistener一次
然后再附加?
或者附加一次之后对buttion附加一个class类名作为标识
判断有class类就不继续执行了

琦玉 发表于 2022-5-23 14:23:12

李恒道 发表于 2022-5-23 14:06
可以先尝试removeaddeventlistener一次
然后再附加?
或者附加一次之后对buttion附加一个class类名作为标 ...

后面那方法不错,我试下。
页: [1]
查看完整版本: 请问大佬如何避免重复添加addEventListener