我的任务是将jQuery转换为普通JS。我在找出在selector
事件处理程序中转换.on()
参数的正确方法时遇到麻烦。
.on( events [, selector ] [, data ], handler )
我对selector
中的.on()
参数实际上是如何工作以及正确复制它所需要做的工作一无所知。
这是我要转换的jQuery:
// jQuery I'm converting from
$('body').on('touchstart', '#chatListDisplay .chatEl', () => { ... });
我尝试仅通过将selector
参数传递到querySelectorAll()
中来包含原始jQuery中使用的元素。
// My attempt at vanilla
var chatEls = document.querySelectorAll('body #chatListDisplay .chatEl');
chatEls.forEach((el) => {
el.addEventListener('touchstart', () => { ... });
});
在这种情况下,事件处理程序永远不会触发,因此我花了一些时间思考一下我的尝试在jQuery中实际代表了什么。它可能与此匹配:
$('body #chatListDisplay .chatEl').on('touchstart', () => { ... });
如预期的那样,将原始jQuery更改为上述内容也会导致事件处理程序无法触发。