http://jsfiddle.net/vol7ron/yssWp/
jQuery对象是否一直没有在属性更改时更新?
<input type="checkbox" checked="checked" id="cb"
onclick = "getVal('click')"
onchange = "getVal('change')"
onmouseup = "getVal('mouseup')"
/> Foo
var global = jQuery('#cb');
function getVal(msg){
var local = jQuery('#cb');
var s = ' ';
alert( 'Event: ' + msg + '\n'
+ s + s + s + s + s + ' _local_' + s + s + '_global_\n'
+ ".is(':checked')\t\t " + t(local.is(':checked')) + t(global.is(':checked')) + '\n'
+ ".attr('checked')\t " + t(local.attr('checked')) + t(global.attr('checked')) + '\n'
+ ".prop('checked')\t " + t(local.prop('checked')) + t(global.prop('checked')) + '\n'
);
}
function t(val){
var l = (val+'').length;
return (val + '' + (l>'false'.length?'\t':(l='checked'.length?'\t\t':'\t\t\t\t')));
}
答案 0 :(得分:1)
问题是用户错误,应在DOM加载后分配全局:
var global = jQuery('#cb');
function getVal(msg){
...
var global;
jQuery(document).ready(function(){
global = jQuery('#cb');
});
function getVal(msg){
...
答案 1 :(得分:0)
根据你的.jsFiddle:
全局未更新,因为它仅在开始时被分配一次。除非你重新加载页面,否则从来没有任何时间。
本地被分配并正确显示,因为每次点击都会运行getVal()3次。 getVal()中没有任何内容以任何方式分配全局,因此全局保持与任何点击发生之前相同。