我的页面上有以下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
中答案 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 );
};
}
我没有看到任何明显错误,但您可以尝试调试此代码并提交补丁,或许..