jQuery:对象检查属性不会更新

时间:2011-08-10 19:56:17

标签: jquery events

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')));
}                            

2 个答案:

答案 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()中没有任何内容以任何方式分配全局,因此全局保持与任何点击发生之前相同。