jQuery:if/else选择器更优雅

Par*_*and 3 jquery

我经常吐出这种代码:

if ($(this).val() == 'X') { $('#something').show(); }
else                      { $('#something').hide(); }
Run Code Online (Sandbox Code Playgroud)

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

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

Geo*_*lly 8

toggle()

根据开关切换显示每组匹配元素(true表示所有元素,false表示隐藏所有元素).

如果开关为真,则切换会使它们隐藏(使用隐藏方法).如果开关为假,则切换显示它们(使用show方法).

var result = ($(this).val() != 'X');
$('#something').toggle(result);
Run Code Online (Sandbox Code Playgroud)

或更短

$('#something').toggle('X' != $(this).val());
Run Code Online (Sandbox Code Playgroud)


Jim*_*mmy 5

对于没有“#something”出现两次的一般问题,我会说两次更易读。否则,您会得到以下结果:

$('#something')[$(this).val()=='X'?'show':'hide']();
Run Code Online (Sandbox Code Playgroud)