jQuery:if / else选择器更优雅

时间:2009-05-12 16:50:26

标签: jquery

我经常吐出这种代码:

if ($(this).val() == 'X') { $('#something').show(); }
else                      { $('#something').hide(); }

我并不是因为$('#something')出现两次而疯狂。是否有更优雅的表达方式?

[更新]我严厉地表达了这个问题 - 我正在寻找一个通用的解决方案,而不仅仅是显示/隐藏(因此切换)。对于基于条件对所选元素采取不同操作的一般情况,是否有更优雅的构造?

2 个答案:

答案 0 :(得分:8)

toggle()

  

切换显示每组   基于开关的匹配元素   (true表示所有元素,虚假隐藏   所有元素)。

     

如果开关是真的,   切换使它们隐藏(使用   隐藏方法)。如果开关是假的,   切换使它们显示(使用   show method)。

var result = ($(this).val() != 'X');
$('#something').toggle(result);

或更短

$('#something').toggle('X' != $(this).val());

答案 1 :(得分:3)

对于没有'#something'出现两次的一般问题,我会说它有两次可读性更高。否则,你最终得到以下结论:

$('#something')[$(this).val()=='X'?'show':'hide']();