1

我在浏览一些循环插件选项时发现了这一点:

$('#prev')[index == 0 ? 'hide' : 'show']()

我不想承认,但我很难将其扩展为“长”形式。我知道如果索引为 0 元素会被隐藏,否则它是可见的。这是让$('#prev')[index == 0我绊倒的:-(

4

3 回答 3

4

通常,您会根据自己的意愿编写$("#prev").hide()或编写。$("#prev").show()

但是,您可以通过使用方括号[]将属性名称作为字符串来访问对象的属性——除其他外,这允许对象键包含否则无效的字符。甚至类似的东西obj["some property name"]在这里也有效。

所以基本上,您的三元运算符所做的是选择是否获取showorhide字符串,然后用于检索 jQuery 对象的该属性(在本例中为方法)并调用它们。

于 2013-10-28T15:13:38.550 回答
3

为了方便您,下面的代码:

$('#prev')[index == 0 ? 'hide' : 'show']();

和做的一样:

if (index == 0) {
    $('#prev').hide();
} else {
    $('#prev').show();
}
于 2013-10-28T15:12:13.533 回答
2

这里真正发生的只是对索引变量的测试。如果它等于 0,则该元素被隐藏,否则它被显示:

var elem = $('#prev');
if ( index == 0 ) {
  elem.hide();
} else {
  elem.show();
}

“隐藏”和“显示”字符串仅仅是函数的名称。需要调用哪个函数由三元条件语句决定。这两个函数都是元素的函数,因此您可以在实际元素上调用它们。语句末尾的括号是实际调用函数的地方。

于 2013-10-28T15:12:11.123 回答