只是在线查看下拉菜单 HERE ,下拉菜单中有以下行,如下所示:
$(this).closest('.menu')[s.indexOf(g) !== -1 ? 'show' : 'hide']();
现在我了解三元运算符,我也理解
$(this).closest('.menu')[0];
是一种常用于派生第一个元素的语法,但我不太了解上面的语法,如何执行该行,或者只是:
$(this).closest('.menu').hide();
取决于三元运算符的结果?
答案 0 :(得分:4)
非常简单。 在JS中,您不仅可以使用 object.field_name 访问对象成员,还可以使用对象[' field_name']
访问对象成员因此,您的代码行可以翻译为:
if(s.indexOf(g) !== -1) {
// $(this).closest('.menu').show()
$(this).closest('.menu')['show']()
} else {
// $(this).closest('.menu').hide()
$(this).closest('.menu')['hide']()
}
答案 1 :(得分:0)
基本上.closest()的作用是,它遍历DOM元素并匹配上下文中给出的匹配。以下是最接近
的实际语法.closest( selector [, context ] )
那么,你将在上下文中提供什么条件它将匹配它并将返回元素。在你的情况下,
$(this).closest('.menu')[s.indexOf(g) !== -1 ? 'show' : 'hide']();
最接近的是遍历' .menu'的所有DOM元素。并将DOM元素与搜索框中输入的字母匹配。如果菜单中的任何DOM元素包含该字母,那么它将其属性设置为show()else将隐藏()它。