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