复选框无法在对话框ui中检查

我试图用jQuery UI Dialog解决z-index问题,类似于问题无法选择或取消选择jQuery UI模式对话框内的复选框 ,知道有错误报告 。

因此,在尝试按照建议启动z-index时,我添加了以下代码:

$('#interface').click(function(evform){ $('#interface').prop('z-index')=99999; }); 

chrome和firefox console.log指出:

未捕获的ReferenceError:赋值中的左侧无效

但是,尽管出现错误,该复选框现在可以正常工作(每次都抛出控制台错误)。 如果我删除违规行,则复选框变为“无法点击”。 我该如何正确编码呢?

我的HTML:

 

Loading...

(顺便说一下,我尝试在

添加内联样式,但它不起作用:

 

Loading...

使用AJAX,我用有效的复选框html替换’#interface’的内容,例如:

  

我有通常的jQuery / Dialog UI文件。

最后一点,我试图发挥创意,因为这不起作用并手动切换复选框:

 if ($(evform.target).prop('type')=="checkbox"){ $(evform.target).checked; } 

*编辑更新*

截至2013年12月22日(EDGE预发行版)的jQuery核心,此错误已得到修复。 我希望他们尽快发布稳定版本(我相信它将是v1.10)! 你可以在jfiddle中测试它: http : //jsfiddle.net/tj_vantoll/XXGQA/

http://bugs.jqueryui.com/ticket/6267

你必须在#dialog上设置z-index ,而不是#interface

您的代码抛出错误,因为您正在尝试为函数调用分配值。 所以你的代码应该是:

 $('#interface').click(function(evform){ $('#dialog').css('z-index', 99999); }); 

或者只是在CSS上:

 #dialog { z-index: 99999; } 

UPDATE

该解决方案不是防弹的。 为jQueryUI提交的错误报告指出,如果复选框的z-index低于对话框下方的叠加层,则会出现问题。 jQueryUI似乎是以绝对的方式比较z索引,这违反了CSS标准(但是可以理解,考虑到适当的比较可能是资源密集型的)。

因此,实际的解决方案可能取决于您在对话框中设置z-index (和position )的元素。 为了避免这个错误,不要在对话框中使用z-index ,或者设置一个值保证高于(动态)分配给覆盖的值(因此,我的99999建议)。

 $('#interface').click(function(evform){ $('#interface').prop('z-index')=99999; }); 

应该

 $('#interface').click(function(evform){ $('#interface').prop('z-index', 99999); }); 

第二个参数(如果提供)将属性设置为其值。

问题原来是return false;return false; 我的点击编码:

 $('#interface').click(function(evform){ *** did stuff here *** evform.preventDefault; return false; //This is the offending line of code }); 

对于诊断,我想看看页面上有更高的z-index,所以我补充说:

 $('*').each(function(){ if ($(this).css('z-index')>99) { console.log ($(this).css('z-index')+", " + $(this).prop('class')); } }); 

这给了我所有元素的z指数高于99.事实certificate,ui对话通常设置为1001或1002,所以@bfavaretto列出的’99999’足够高。

还是不知道为什么return false; 创建了错误,但我希望下一次更新可以解决问题。