jQuery: свойство проверенного объекта не будет обновляться - PullRequest
4 голосов
/ 10 августа 2011

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 ]

1 голос
/ 11 августа 2011

Проблема была в пользовательской ошибке, глобальная должна быть назначена после загрузки DOM:

От:

var global = jQuery('#cb');
function getVal(msg){
...

Кому:

var global;

jQuery(document).ready(function(){ 
   global = jQuery('#cb'); 
});

function getVal(msg){
...
0 голосов
/ 11 августа 2011

в соответствии с вашим .jsFiddle:

global не обновляется, поскольку назначается только один раз - в начале.никогда после этого, если только вы не перезагрузите страницу.

local назначается и отображается правильно, потому что getVal () запускается 3 раза для каждого клика.В getVal () нет ничего, что каким-либо образом присваивало бы global , поэтому global остается таким же, каким оно было до того, как произойдет любой щелчок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...