0

对此可能有一个非常简单的解决方案,但我的 jQuery 技能还没有达到多少。我正在使用下面的内容来显示和隐藏基于下拉列表中的值的 div。我想对其进行调整,以便“否”和“”都可以使用。我如何做到这一点?

提前致谢

$('#q1').change(function(){
 if ($(this).val() == "No") {
 $('#divv').show();
 } else {
 $('#divv').hide();
 }
 });
4

6 回答 6

0

在这种情况下,您可以使用 JavaScript逻辑或运算符( ||):

$('#q1').change(function() {
    value = this.value;
    if (value == "No" || value == "") {
        $('#divv').show();
    } else {
        $('#divv').hide();
    }
}
);

实际上,最适应的解决方案是:if (value.toLowerCase() == "no" || value == "") {无论在什么情况下,这都会接受“否”。

演示:http: //jsfiddle.net/SO_AMK/YKeFy/1/

编辑:更新代码以满足 Kolink 和 Bergi

于 2012-08-03T18:31:02.450 回答
0

使用 javascript OR 运算符 ( ||):

$('#q1').change(function(){
 var thisVal = $(this).val();
 if ((thisVal == "No") || (thisVal == "")) {
 $('#divv').show();
 } else {
 $('#divv').hide();
 }
 });
于 2012-08-03T18:31:05.323 回答
0

有很多方法。我个人会这样做:

if( this.value.match(/(No)?/i)) {

i允许NOno并且nO也可以工作 - 如果您只想要“否”,请将其删除。

于 2012-08-03T18:31:41.937 回答
0

逻辑OR运算符应该这样做:

$('#q1').change(function(){
    if (this.value == "No" || this.value == "") {
        $('#divv').show();
    } else {
        $('#divv').hide();
    }
});

我没有使用$(this)(尤其不是两次)创建 jQuery 对象,而只是使用了普通的 javascript。更简洁,如果你愿意(使用三级运算符非运算符来检查空字符串和括号表示法):

$('#q1').change(function(){
    $('#divv')[ (this.value == "No" || !this.value) ? "show" : "hide" ]();
});
于 2012-08-03T18:52:43.800 回答
0

您可以通过使用toggle()正则表达式检查值来使用和设置状态以显示或隐藏。

$('#q1').on('change', function(){
    $('#divv').toggle(this.value.match(/(no|^$)/i));
});

小提琴 ​</p>

于 2012-08-03T18:56:17.900 回答
-1

复制并粘贴这个,这应该工作。

$('#q1').change(function(){
 if (($(this).val() == "No") || ($(this).val() == "")) {
 $('#divv').show();
 } else {
 $('#divv').hide();
 }
 });
于 2012-08-03T18:33:49.457 回答