2011-03-09 96 views
0

我想要1)如果(「#one」)被選中並且(「#two」)未被選中,則顯示警報。然後顯示不同的警報,如果兩者都被選中。我的第一部分是正確的,然後在第二部分顯示這兩個警報。2條件可以這樣組合嗎?

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

是的,他們可以... – amosrivera

回答

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?

+0

你能解釋逗號分隔變量嗎?和.get(0)這是幹什麼的? –

+0

@Dirty:分隔的逗號或多或少等價於單獨的'var'語句。有些人,如[Douglas Crockford](http://www.jslint.com/lint.html),主張每個函數使用一個'var'語句。看[這個問題](http://stackoverflow.com/questions/810313/)。 ['.get()'](http://api.jquery.com/get)調用返回底層的DOM元素(不是jQuery元素),因此您可以訪問'.checked'屬性而不是多做一個如果沒有必要,可以使用昂貴的'.attr()'調用。 –

+0

非常好,謝謝。我會盡力併入這個。我真的很感激這個男人。 –

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

它看起來好像沒什麼問題。這在這裏的例子:http://jsfiddle.net/andypaxo/9vJGL/

這是你想要的行爲?

+0

有一個選擇器錯了,我想可以開始。 thx @andypaxo! –

+1

@Dirty:你還在使事情變得更加複雜(效率更低)! –

+0

@Matt - 我知道,我正在嘗試的人。哪種方法最好?我對三元運算符很熟悉,但是我不使用香草警報,而是使用jAlert對話框,所以這些對話框都沒有了。 –

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"); 
     } 
    } 
}); 
+0

嘗試它,但我需要變量是本地的,因爲會有很多這些 –

+0

你可以這樣寫,我只讓它們變量來緩存查找:'$(「#one」)。click(function (){){(this).is(「:checked」)){ if($(「#two」)。(「:checked」)){ alert(「foo foo」); } else { alert(「foo」); } } });' –

1

我重構了一下襬脫嵌套如果和乾燥了一點東西的:

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

不錯,三元運算符,我喜歡這個。 thx隊友。 –