jquery – 这更有效:.parent() parent() parent()〜或〜parents(“ foo”)〜或〜closest(“ foo”)

前端之家收集整理的这篇文章主要介绍了jquery – 这更有效:.parent() parent() parent()〜或〜parents(“ foo”)〜或〜closest(“ foo”)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个A标签,触发它的伟大的伟大的祖父母的动画。所有以下将工作,但是这是最有效的,为什么?
$(this).parent().parent().parent().parent().parent().animate(...);

$(this).parents(".foo").animate(...);

$(this).closest(".foo").animate(...);

我怀疑第一个可能是,因为它是最明确的,但出于维护的原因(嵌套可能改变)我喜欢第二。他们似乎在实践中顺利运行。

解决方法

井最近只有当你在’clicked’元素上升或在同一水平时才有用。

例如,如果你有下面的情景:

<div class="controls radio-other">
    <label class="radio"><input type="radio" name="item">Option one</label>
    <label class="radio"><input type="radio" name="item">Option two</label>
    <label class="radio"><input type="radio" name="item" class="other-option" data-othertarget="#otherone"> Other... </label>
    <input type="text" placeholder="Alternative answer" id="otherone" class="hidden">
</div>

然后最接近(‘#otherone’)将找不到$(‘。其他选项’)上的隐藏文本字段click()
更好的解决方案是在这种情况下是使用$(this).parentsUntil(‘。radio-other’)。find(‘#otherone’)

看看我的回答我在这里做了一个jsperf,反映了上述情况与不同的解决方案。只是使用什么是最有用的您的html场景。结果是parent()。parent()是最快的方法,但如果你的html在使用中更灵活,这不总是一个好的选择。添加一个div父对象,父对象()。parent()断开。

原文链接:https://www.f2er.com/jquery/184304.html

猜你在找的jQuery相关文章