我用一个简单的道具呼叫改变jqueryui
“切换”按钮(又名checkbox
)的状态,使用这样的: $("#completed_button").prop("checked", true);
jQueryUI的按钮状态上托呼不改变
功能的复选框改变状态和脚本运行正常。不幸的是,它并没有改变按钮的视觉状态。任何想法为什么不这样做,我能做些什么来实现它?
示例:中间下方是使用鼠标切换时的样子,右侧是使用上述呼叫时发生的情况。注意文本是如何正确的,但视觉亮点不是。
我用一个简单的道具呼叫改变jqueryui
“切换”按钮(又名checkbox
)的状态,使用这样的: $("#completed_button").prop("checked", true);
jQueryUI的按钮状态上托呼不改变
功能的复选框改变状态和脚本运行正常。不幸的是,它并没有改变按钮的视觉状态。任何想法为什么不这样做,我能做些什么来实现它?
示例:中间下方是使用鼠标切换时的样子,右侧是使用上述呼叫时发生的情况。注意文本是如何正确的,但视觉亮点不是。
的问题是,按钮的jQuery的UI元素从切换按钮监听变化事件,但是当你说.prop('checked', true)
的变化不会触发事件。此行为一直回到DOM Level 2 Event Model:
更改事件发生在控件失去输入焦点并且自获得焦点后修改其值时。此事件对INPUT,SELECT和TEXTAREA有效。元件。
调用.prop('checked', true)
(甚至.attr('checked', 'checked')
)并不这么没有变化事件发生改变的焦点。
解决的办法是自己触发这种改变事件:
$("#completed_button").prop("checked", true).change();
这应该让jQuery的UI包装知道复选框已经改变状态,然后jQuery的UI视觉也将发生变化。
下面是一个简单的演示,说明这是怎么回事:http://jsfiddle.net/ambiguous/8et3G/
令人惊叹的回复!谢谢。 我喜欢这是一个简单的解决方法,并且您为了解它发生的原因而给出了背景故事。难怪你有61.7k代表。 – Brian 2012-01-10 17:35:59
多一点的代码将是有益的。 – j08691 2012-01-10 00:08:22