代码之家  ›  专栏  ›  技术社区  ›  Charles Anderson

jquery在opera中找不到一致的禁用元素

  •  0
  • Charles Anderson  · 技术社区  · 14 年前

    我有一个HTML表,其中第一列的每个单元格都包含一个带有类“MyClass”的复选框。我还将一个复选框放入该列的标题单元格中,希望它能够正常工作,以便选中或取消选中标题单元格集或取消设置所有行复选框。我在标题复选框的单击处理程序中有此代码:

    if (jQuery(event.target).attr('checked') === true) {
        alert(jQuery('td .myClass:enabled').length);
        jQuery('td .myClass:enabled').attr('checked', 'checked');
    } else {
        alert(jQuery('td .myClass:enabled').length);
        jQuery('td .myClass:enabled').removeAttr('checked');
    }
    

    三行启用了复选框,五行禁用了复选框。

    该代码在IE8、FF3.6和Chrome7.0中运行良好。然而,在Opera10.63中,我第一次检查头单元格时,所有八行都会被检查。随后,代码按预期工作。

    警报语句证实了这一点,除了第一个,每次都显示“3”。

    这是歌剧虫吗?如果有,是否有解决办法?

    1 回复  |  直到 14 年前
        1
  •  2
  •   hallvors    14 年前

    奇怪的同步性-我刚刚分析了一个bug报告,我认为这是几个小时前的同一个问题:)

    是的,这可能是一个bug,Opera无法将正确启用的伪类应用于在DOM中创建并随后插入到文档中的元素。

    使用类名而不是:启用可能是一种可接受的解决方案。或者相反。可能是OnLoad中所有复选框上的两次选中属性?这听起来像是来回切换禁用或检查的状态将使Opera处理得很好。