4

我希望能够做到这一点:

var b = $(this).is(':checked')
$('.perspective-col'). (b) ? show() : hide()

代替

var b = $(this).is(':checked')
if(b) {    
    $('.perspective-col').show() 
} else {
    $('.perspective-col').hide()
}

我是不是想要的太多了?还是有一些我还没有找到的美妙的 javascript 语法?还是我认为到目前为止 JQuery 中不存在这样的事情是正确的?(我使用的是 JQuery 1.9.0)

4

2 回答 2

21

你可以使用这个:

var b = $(this).is(':checked')
$('.perspective-col')[b ? 'show' : 'hide']()

您可以通过将字符串传递到括号中来调用 jQuery 函数[]。只需在里面插入一个条件来决定你通过哪个字符串!

一般来说,

<any expression>.property

相当于:

<any expression>['property']

不同之处在于您可以将'property'括号中的文字替换为计算属性名称的表达式。jQuery 方法只是其值恰好是函数的属性。

但我实际上讨厌这种做法。您还可以使用jQuery .toggle()

于 2013-07-02T04:05:16.413 回答
6

jQuery 有一个方法可以做你想做的事toggle()

$('.perspective-col').toggle(b);
于 2013-07-02T04:06:22.277 回答