可以像这样组合2个条件吗?

时间:2011-03-09 03:40:23

标签: jquery

我想1)如果选中(“#one”)并且未检查(“#two”)则显示警告。如果两者都被选中,则显示不同的警报。我的第一部分是正确的,然后在第二部分显示两个警报。

$("#one").click(function() {
    if($(this).is(":checked") && $("#two").is(":not(:checked)")) {
    alert("foo");
    } else {
        if($(this).is(":checked") && $("#two").is(":checked")) {
            alert("foo foo");
        }
    }
});

5 个答案:

答案 0 :(得分:3)

我认为你过度复杂了。

$("#one").click(function() {
    var thisIsChecked = this.checked,
        twoisChecked = $('#two').get(0).checked;

    if(thisIsChecked) {
         if (twoisChecked) {
            alert('foo foo');    //  <----
         }                       //      |  note the switch
         else {                  //      |
            alert('foo');        //  <----
         }
    }
});

另请参阅:When to use Vanilla JavaScript vs. jQuery?

答案 1 :(得分:1)

$("#one").click(function() {
    if(this.checked) {
       var $two = $("#two");
       if (!$two.is(":checked")) {
            alert("foo");
       } else {
            alert("foo foo");
       }
    }
});

答案 2 :(得分:1)

对我来说很好看。此处的示例示例:http://jsfiddle.net/andypaxo/9vJGL/

这是你想要的行为吗?

答案 3 :(得分:1)

JSfiddle with solution

HTML:

<form>
   <input id="one" type="checkbox" />
   <input id="two" type="checkbox" />
</form>

JS:

var one = $("#one");
var two = $("#two");

one.click(function() {    
    if (one.is(":checked"))  {
        if (two.is(":checked")) {
           alert("foo foo"); 
        } else {
           alert("foo");
        }  
    }
});

答案 4 :(得分:1)

我会重构一下以摆脱嵌套的ifs并稍微干一点:

$("#one").click(function() {
    if(!this.checked) { return }
    var message = $("#two").is(':checked') ? 'foo foo' : 'foo';
    alert(message)
});