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