IE复选框jquery点击事件似乎随机工作?

时间:2011-08-17 04:48:12

标签: jquery-selectors jquery

下面的代码在Chrome中运行良好,它在IE7中间歇性地工作,而在IE8中根本没有...原来我没有禁用/启用复选框,但是因为我注意到IE数据没有正确更新我想也许它不能跟不上用户点击太快以至于当我尝试在点击任何一个复选框时禁用所有复选框,然后在查询成功后重新启用它们。那时很明显行为是奇怪的和随机的。

编辑我刚刚在IE中清除了缓存并重新加载了页面。我成功地检查并取消选中每个方框。一旦每个动作都应用于每个盒子,它就会停止工作。这是一个缓存问题吗?

       $('input[type=checkbox]').live('click', function () {
           //disable all checkboxes until it's done saving
           $('input[type=checkbox]').attr('disabled', true);
           if ($('input[id=' + $(this).attr('id') + ']:checked').length) {
               //do checked stuff including ajax call
               $.ajax({
                   url: 'EditService.svc/updatedatachecked',
                   type: 'GET',
                   data: { "code": code },
                   dataType: 'json',
                   success: function () {
                       //reenable all checkboxes
                       $('input[type=checkbox]').removeAttr('disabled');
                   },
                   error: function (a, b, c) {
                       $('.EditStatus').html("Database Error!");
                   }
           } else {
               //do unchecked stuff including ajax call
               $.ajax({
                   url: 'EditService.svc/updatedataUNchecked',
                   type: 'GET',
                   data: { "code": code },
                   dataType: 'json',
                   success: function () {
                       //reenable all checkboxes
                       $('input[type=checkbox]').removeAttr('disabled');
                   },
                   error: function (a, b, c) {
                       $('.EditStatus').html("Database Error!");
                   }
           }
       });

1 个答案:

答案 0 :(得分:0)

这实际上是一个缓存问题。我在每个ajax调用中都包含了一个时间戳,它开始按预期工作。

$('input[type=checkbox]').live('click', function () {
       //disable all checkboxes until it's done saving
       $('input[type=checkbox]').attr('disabled', true);
       if ($('input[id=' + $(this).attr('id') + ']:checked').length) {
           //do checked stuff including ajax call
           $.ajax({
               url: 'EditService.svc/updatedatachecked',
               type: 'GET',
               data: { "code": code, "timestamp": timestamp },
               dataType: 'json',
               success: function () {
                   //reenable all checkboxes
                   $('input[type=checkbox]').removeAttr('disabled');
               },
               error: function (a, b, c) {
                   $('.EditStatus').html("Database Error!");
               }
       } else {
           //do unchecked stuff including ajax call
           $.ajax({
               url: 'EditService.svc/updatedataUNchecked',
               type: 'GET',
               data: { "code": code, "timestamp": timestamp },
               dataType: 'json',
               success: function () {
                   //reenable all checkboxes
                   $('input[type=checkbox]').removeAttr('disabled');
               },
               error: function (a, b, c) {
                   $('.EditStatus').html("Database Error!");
               }
       }
   });