循环插件中的javascript'short hand'表示法

时间:2013-10-28 15:10:14

标签: javascript jquery

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

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

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

3 个答案:

答案 0 :(得分:4)

通常情况下,您可以根据自己的目标编写$("#prev").hide()$("#prev").show()

但是,您可以使用带有属性名称作为字符串的方括号[]来访问对象的属性 - 除此之外,这允许对象键包含其他无效的字符。即使像obj["some property name"]这样的东西在这里也是有效的。

基本上,你的三元运算符正在做的是选择是否获取showhide字符串,然后用于检索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'字符串仅仅是函数的名称。需要调用哪个函数由三元条件语句决定。这两个函数都是元素的函数,因此您可以在实际元素上调用它们。语句末尾的括号是实际调用函数的内容。