我正在使用Khavilo Dmitry的jQuery checkbox code来获取复选框和单选按钮。这看起来不错,但他的禁用代码不起作用。该按钮按预期显示为灰色,但它仍然响应鼠标点击。
我猜测问题是他绑定禁用如下:
var ch = this; /* Reference to DOM Element*/
...
$ch.bind('disable', function() {ch.wrapperInner.addClass(settings.cls+'-disabled');})
.bind('enable', function() {ch.wrapperInner.removeClass(settings.cls+'-disabled');});
此代码是否删除了禁用鼠标事件的任何默认绑定?感谢。
答案 0 :(得分:0)
代码唯一要做的就是将事件绑定到事件'disable'& '启用'
当'disable'事件被触发时,他正在向内部范围添加一个类jquery-checkbox-disabled
。他在启用事件中删除了它。
<input name="checkbox.1.2" type="checkbox" id="check" checked="" style="position: absolute; z-index: -1; visibility: hidden; " disabled="disabled">
<span class="jquery-checkbox jquery-checkbox-checked">
<span class="mark jquery-checkbox-disabled">
<img src="empty.png">
</span>
</span>
正如您所看到的,复选框确实被禁用,但为您提供自定义外观的元素只是常规的跨度,仍然可以点击。
看来Dmitry正在将这些跨度的点击事件传递给隐藏的复选框。
a.wrapper.click(function(e) {
b.trigger('click', [e]);
i(e);
return false
});
这就是为什么你仍然可以获得复选框的点击事件,即使它已被禁用。正在以编程方式单击该复选框。
因此,如果您的问题是您尝试检测复选框何时更改,那么我建议您使用更改事件,因为它似乎没有遇到相同的问题。