在jquery`show`和`hide`方法中理解三元运算符。

时间:2015-10-01 10:14:40

标签: jquery

只是在线查看下拉菜单 HERE ,下拉菜单中有以下行,如下所示:

 $(this).closest('.menu')[s.indexOf(g) !== -1 ? 'show' : 'hide']();

现在我了解三元运算符,我也理解

 $(this).closest('.menu')[0];

是一种常用于派生第一个元素的语法,但我不太了解上面的语法,如何执行该行,或者只是:

 $(this).closest('.menu').hide();

取决于三元运算符的结果?

2 个答案:

答案 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将隐藏()它。