1

HTML:

<div>
    <div class="t-dropzone">
        <input id="files" >
    </div>
    <ul></ul>
</div>

jQuery

$('#files').parents('.t-dropzone:first + ul')

jquery-1.5.1.min.js它返回一个ul元素的情况下,但jquery-1.7.2.min.js返回null.

哪个库包含错误?

4

2 回答 2

2

该语句应该返回一个空的 jQuery 对象。您正在寻找#files该 matches的祖先.t-dropzone:first + ul,因此该祖先必须是一个ul元素,其中没有。

稍微更详细一点,该选择器会找到ul紧跟第一个元素的.t-dropzone元素。第一个.t-dropzone元素是 的祖先#files,紧随其后的是 a ul,但它ul不是 的父元素#files,因此不应返回。

因此,要回答您的问题,jQuery 1.5.1(及以下)包含错误,并且在 jQuery 1.7.1 中已修复(据我所知,通过更改jsfiddle.net上的 jQuery 版本)。

于 2012-05-28T10:15:37.357 回答
0

它不会那样工作。您需要选择第div一个,然后获取它的ul兄弟:

$('#files').closest('.t-dropzone').next('ul')

有关原因的详细解释,请参阅詹姆斯的回答。

于 2012-05-28T10:19:04.600 回答