javascript - 在 bootstrap 4 中检测 radio 输入的更改事件(带有按钮样式的标签)

标签 javascript jquery html twitter-bootstrap

根据标题,我正在尝试检测 this jsfiddle 中的更改事件(当我检查 DOM 时似乎没有发生) 。 radio 输入使用 Bootstrap 类来设计样式。为什么我没有得到改变?

作为引用,这里有一些代码:

<div class="btn-group" data-toggle="buttons">
  <label class="btn btn-sm btn-primary active">
    <input type="radio" name="preview" id="preview-enabled" value="true" autocomplete="off" checked>Alice
  </label>
  <label class="btn btn-sm btn-secondary">
    <input type="radio" name="preview" id="preview-disabled" value="false" autocomplete="off">Bob
  </label>
</div>

单击按钮时,输入单选按钮不会更改。

我还收到一个奇怪的错误,即 bootstrap 的 js 需要 jquery(但是按照 the official instructions 在 bootstrap 的 js 之前包含 jquery)

最佳答案

输入radio元素的“checked”属性不会改变(因此不会触发eventListener);这是 underlying DOM property 检查了发生变化的元素。

您可能会认为解决方案是使用 MutationObserver 监听该节点上 DOM 属性的更改。 。然而this doesn't work either ,因为这不是 DOM 的变化,只是状态的变化。而且似乎(不使用像 React 这样的影子 DOM 框架)没有办法在不轮询的情况下跟踪这一点。

关于javascript - 在 bootstrap 4 中检测 radio 输入的更改事件(带有按钮样式的标签),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40318751/

相关文章:

javascript - 如何优化这段 jQuery 代码?

html - 溢出和列表样式类型不起作用

html - ASP.NET 文本框在从右到左的网页中从左到右对齐文本

javascript - 初始加载和更新之间的 SignalR

javascript - 基于浏览器的本地文件系统到 SVG base64 数据字符串

javascript - jQuery 切换/循环通过 3 个状态

javascript - 具有来自 get 请求的上下文的 jquery 选择器

javascript - 是否可以使用 jquery 或 javascript 更改没有 id 或类的 div 的样式?

javascript - 光窗

javascript - Google map 以特定搜索区域为中心