我在浏览一些循环插件选项时发现了这一点:
$('#prev')[index == 0 ? 'hide' : 'show']()
我不想承认,但我很难将其扩展为“长”形式。我知道如果索引为 0 元素会被隐藏,否则它是可见的。这是让$('#prev')[index == 0
我绊倒的:-(
我在浏览一些循环插件选项时发现了这一点:
$('#prev')[index == 0 ? 'hide' : 'show']()
我不想承认,但我很难将其扩展为“长”形式。我知道如果索引为 0 元素会被隐藏,否则它是可见的。这是让$('#prev')[index == 0
我绊倒的:-(
通常,您会根据自己的意愿编写$("#prev").hide()
或编写。$("#prev").show()
但是,您可以通过使用方括号[]
将属性名称作为字符串来访问对象的属性——除其他外,这允许对象键包含否则无效的字符。甚至类似的东西obj["some property name"]
在这里也有效。
所以基本上,您的三元运算符所做的是选择是否获取show
orhide
字符串,然后用于检索 jQuery 对象的该属性(在本例中为方法)并调用它们。
为了方便您,下面的代码:
$('#prev')[index == 0 ? 'hide' : 'show']();
和做的一样:
if (index == 0) {
$('#prev').hide();
} else {
$('#prev').show();
}
这里真正发生的只是对索引变量的测试。如果它等于 0,则该元素被隐藏,否则它被显示:
var elem = $('#prev');
if ( index == 0 ) {
elem.hide();
} else {
elem.show();
}
“隐藏”和“显示”字符串仅仅是函数的名称。需要调用哪个函数由三元条件语句决定。这两个函数都是元素的函数,因此您可以在实际元素上调用它们。语句末尾的括号是实际调用函数的地方。