[英]onClick doesn't work on custom created element
你好
我已经建立了一个搜索,每次用户输入单词时它都会呈现新的复选框,但新的复选框不像以前那样工作,所有事件侦听器都无法处理新的复选框,当我单击复选框时,它们只是没有反应,但在旧的,直到搜索将呈现这个他们正常工作
//search in checkbox data
const checkOptions = (container, value, containerId) => {
for (let i = 0; i < props.unique[containerId].length; i++) {
let item = props.unique[containerId][i];
if (
props.unique[containerId][i] !== null &&
props.unique[containerId][i].includes(value)
) {
element = (
<label
onClick={(e) => {e.stopPropagation(); ifAnyChecked(e);}} key={i}>
<input onClick={(e) => {tableSearch(e);}} type="checkbox" value={item ? item : "empty"}/>
{item && item.length > 28 ? (
handleCheckbox(item)
) : (
<p>{item}</p>
)}
</label>
);
tempData += ReactDOMServer.renderToString(element);
}
}
container.innerHTML = tempData;
};
知道发生了什么吗?
您是否尝试过使用onChange
事件而不是onClick
? 据我所知,输入类型复选框没有像onClick
这样的事件。
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox
我曾经在使用 Vanilla JS 时遇到这个问题,每当我渲染一个新元素时,该元素就不会触发我的事件。 那是因为它们是在运行时生成的,因此事件未绑定到该元素。 现在我认为这件事也发生在这里。 所以我更改了您的代码并将其置于一个状态,现在它正在工作。 我希望我有所帮助。 如果这不是您正在寻找的解决方案,请告诉我,但它可以解决您的问题
我将 html 放在一个状态数组中,然后将它映射到newCheckBox
div 中。 我将输入更改为具有fieldValue
状态的受控输入。 最后,我将新的复选框警报从onClick={alert("doesn't goes in")}
更改为onClick={() => alert("I think its working now right?")}
这里是完整的代码沙箱https://codesandbox.io/s/polished-sea-vedvh?file=/src/App.js
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.