用于方法调用的 Javascript 三元运算符
Posted
技术标签:
【中文标题】用于方法调用的 Javascript 三元运算符【英文标题】:Javascript ternary operators for method calls 【发布时间】:2013-06-29 07:49:18 【问题描述】:我希望喜欢能够做到这一点:
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)
【问题讨论】:
另一个与当前答案不同的选项是使用:$.fn[b ? "show" : "hide"].call($(".perspective-col"))
【参考方案1】:
你可以用这个:
var b = $(this).is(':checked')
$('.perspective-col')[b ? 'show' : 'hide']()
您可以通过将字符串传递到括号[]
来调用jQuery 函数。只需在里面插入一个条件来决定你传递哪个字符串!
一般来说,
<any expression>.property
相当于:
<any expression>['property']
不同之处在于,您可以将括号中的文字'property'
替换为计算属性名称的表达式。 jQuery 方法只是其值恰好是函数的属性。
但我实际上讨厌这种做法。你也可以使用jQuery .toggle()
【讨论】:
也许注意到这行得通,因为<expression>.name
等价于<expression>['name']
。方法调用或 jQuery 没有什么特别之处。
如果有错误解释(或更好的表达方式),请随时编辑我的答案! :)【参考方案2】:
jQuery 有一个方法可以做你想做的事,叫做toggle()
:
$('.perspective-col').toggle(b);
【讨论】:
哇。是时候重写我在过去一周写的一半 javascript...xD 谢谢! 有了一个好的 IDE,你也许可以使用正则表达式替换来重写它们。 仅供参考,我正在编写的方法尝试根据复选框值显示()具有 class="perspective" 的所有列,而不考虑依赖于单个列的其他复选框,因此toggle()
是'不正是我现在正在寻找的。span>
我的回答是基于您在问题中编写的代码,其中有一个 b
用于与选择器匹配的所有元素。同样的事情也适用于 Karl-André 的回答。如果不同的元素需要进行不同的切换,可以使用.each()
,获取相应的b
,然后使用$(this).toggle(b)
。
很抱歉没有包含更多关于我之前意图的信息。很酷,所以:$('some-element').each(function() var b = $(this).is(':checked'); $(this).toggle(b); )
Clean。以上是关于用于方法调用的 Javascript 三元运算符的主要内容,如果未能解决你的问题,请参考以下文章