我经常吐出这种代码:
if ($(this).val() == 'X') { $('#something').show(); }
else { $('#something').hide(); }
Run Code Online (Sandbox Code Playgroud)
让$('#something')出现两次我并不疯狂.是否有更优雅的表达方式?
[更新]我严厉地表达了这个问题 - 我正在寻找一个通用的解决方案,而不仅仅是显示/隐藏(因此切换).对于基于条件对所选元素采取不同操作的一般情况,是否有更优雅的构造?
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)
对于没有“#something”出现两次的一般问题,我会说两次更易读。否则,您会得到以下结果:
$('#something')[$(this).val()=='X'?'show':'hide']();
Run Code Online (Sandbox Code Playgroud)