Jquery在firefox 3.5.9中查找行为

时间:2010-06-14 19:57:02

标签: jquery jquery-selectors

我的页面上有以下HTML代码:

<tr>
  <td>
    <div>
      <input type="hidden" name="test" value="">
      <input autocomplete="off" class="ffb-input watermark">
      <div class="ffb">
        <div class="content">
        </div>
      </div>
    </div>
  </td>
</tr>

在JavaScript中,我使用jquery获取<tr>元素并尝试搜索这样的输入:

tr.find('div input:hidden')

但没有任何回复。当我使用像这样的发现时:

tr.find('div input[type=hidden]')

一切都很好。这种行为的原因是什么? 我只在FireFox 3.5.9中观察到这一点,而不是在3.6.3,Jquery 1.4.2

1 个答案:

答案 0 :(得分:0)

type选择器似乎没有考虑:hidden属性。如评论中所述,,因此您可能需要file a bug

这似乎是:hidden的{​​{3}}:

if ( jQuery.expr && jQuery.expr.filters ) {
    jQuery.expr.filters.hidden = function( elem ) {
        var width = elem.offsetWidth, height = elem.offsetHeight,
            skip = elem.nodeName.toLowerCase() === "tr";

        return width === 0 && height === 0 && !skip ?
            true :
            width > 0 && height > 0 && !skip ?
                false :
                jQuery.curCSS(elem, "display") === "none";
    };

    jQuery.expr.filters.visible = function( elem ) {
        return !jQuery.expr.filters.hidden( elem );
    };
}

我没有看到任何明显错误,但您可以尝试调试此代码并提交补丁,或许..