我跑進這行代碼,我無法弄清它的意思是:jquery選擇器之後的括號和括號是什麼意思?
$("#theAppContainer")[s > u ? "addClass" : "removeClass"]("something");
我理解的第一部分被選擇稱爲theAppContainer和第二部分中的元素的計算結果爲「addClass」如果s>你,但我無法弄清楚這行代碼總體上做了什麼。
我跑進這行代碼,我無法弄清它的意思是:jquery選擇器之後的括號和括號是什麼意思?
$("#theAppContainer")[s > u ? "addClass" : "removeClass"]("something");
我理解的第一部分被選擇稱爲theAppContainer和第二部分中的元素的計算結果爲「addClass」如果s>你,但我無法弄清楚這行代碼總體上做了什麼。
The bracket syntax gets the value of a property by name,和括號調用是屬性值的功能。它相當於:
var container = $('#theAppContainer');
if(s > u) {
container.addClass('something');
} else {
container.removeClass('something');
}
另外,請不要寫這樣的代碼。 =)
而且還需要一秒鐘switch
說法,您可以改用:
$('#theAppContainer').toggleClass('something', s > u);
我確實喜歡三元的很多,但在這種情況下,它是一種可笑的哈哈,同意! –
我不知道,我有點喜歡它。它甚至不是我見過的JQuery單線程的最瘋狂的一點! [從性能角度來看],至少,它們幾乎完全相同。 –
@SandyGifford:表現應該是最後考慮的立場!無論如何,我已經添加了jQuery風格的做事方式。謝謝你讓我看起來:) – Ryan
$("#theAppContainer")
返回一個jquery對象。
jqueryObject["addClass"]
與jqueryObject.addClass
所以,jqueryObject["addClass"]
返回jquery的對象上的addClass方法的同義詞。
然後您使用("something")
將參數傳入並執行該方法。
所以你基本上做
var myJqueryObject = $("#theAppContainer");
if(s > u) {
myJqueryObject.addClass("something");
}
else {
myJqueryObject.removeClass("something");
}
方括號符號。
$('#element')['hide'](700)
點符號:
$('#element').hide(700)
其他的事情(?:)被稱爲ternary operator
,彰顯個性比較返回一個布爾值,
凡s>u
是一個語句,並根據結果值用於:
STATEMENT ? IF TRUE USE THIS : IF FALSE USE THAT ;
如果s > u
使用'addClass'
其他使用'removeClass'
這意味着如果您使用的是s > u
和 $("#theAppContainer")["removeClass"]("something");
如果您將獲得$("#theAppContainer")["addClass"]("something");
if s===u || s<u
可以用點表示在翻譯:
$("#theAppContainer").addClass("something");
或
$("#theAppContainer").removeClass("something");
這不是做的最好的方法,因爲你可以在特定情況下使用toggleClass()
方法,但任何這是很好的知道。
而且不應該使用括號表示法。在高級JS中,你會看到所有的好處。
如果你在談論我的答案,我沒有說過從不使用括號表示法。在這種情況下,這只是一個愚蠢的選擇。 – Ryan
它是一個三元運算符,就像一個if/else,所以如果's'大於'u',那麼選擇addClass等。 – adeneo
作爲旁註,應該注意的是toggleClass有一個開關,所以你可以只是做'$(「#theAppContainer」)。toggleClass('something',s> u);' – adeneo