jQuery UI 按钮功能不适用于复选框

标签 jquery jquery-ui

我正在尝试使用 jQueryUI button小部件,尤其是将复选框变成漂亮按钮的选项。

普通按钮可以正常工作,但复选框不行!

这是我的代码

HTML:

<button id="button">button</button>
<label for="input">
    <input id="input" type="checkbox"/>Checkbox
</label>

JavaScript:

$('#button').button();
$('#input').button();

我不明白为什么它在复选框上不起作用!!

DEMO

最佳答案

解决方案:
将 html 更改为:

<button id="button">button</button>
<label for="input">
    Checkbox
</label>
<input id="input" type="checkbox"/>

它会正常工作,demo .

说明:
如果你检查 jQuery-UI 代码,特别是函数 _defineButtonType (版本 1.8.18 上的第 7069 行),你会发现

var ancestor = this.element.parents().filter(":last"),
            labelSelector = "label[for='" + this.element.attr("id") + "']";
this.buttonElement = ancestor.find( labelSelector );

因此 jQuery-UI 假设它可以在输入的最后一个父级中找到标签,而在您的示例中,标签最后一个父级。
我认为这是一个应该修复的错误,因为许多开发人员都有这样编写标签的习惯。

关于jQuery UI 按钮功能不适用于复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10965103/

相关文章:

JQuery UI 选项卡 - "Loading..."消息

javascript - 在提交调试之前显示表单值

javascript - 如何将 chart.js 图表保存在一个 JS 文件中,并且当 JS 文件中的 ID 在一个特定的 html 页面上不存在时不会出现错误?

javascript - JQuery 随机停止工作 ( .size() )

javascript - 检查鼠标是否在 div 内

jquery - 使用jquery垂直对齐div

jquery - 动态创建的元素上的可删除和可排序功能不起作用

javascript - 从百分比获取数组索引?

php - jquery ui 对话框和加载外部内容

javascript - 使用在其中附加了 div 的 jQuery 发送表单数据