回答
我已經更新了你的小提琴,因爲我認爲你期待它。
我刪除了if/else語句和簡單使用的jQuery切換能力(http://api.jquery.com/toggle/)。創建了一個我希望對象轉換爲的類。我發現這使代碼更清潔和有組織。
固定碼: http://jsfiddle.net/MMf9Q/6/
的jQuery:
$('#clickme').click(function(){
$(this).toggleClass('red');
})
使用$(本)來訪問此元件作爲jQuery對象
$('#clickme').click(function(){
var color = $(this).css('background-color');
if(color == '#cc0000'){
$(this).css('background', '#00CC00');
}else{
$(this).css('background', '#CC0000');
}
})
請注意,JQuery返回的顏色爲「rgb(r,g,b)」而不是十六進制 - 您必須將其轉換 - 請參閱http://stackoverflow.com/questions/1740700/get-hex-value-rather-比rgb-value-using-jquery – 2012-04-26 12:47:44
撥弄
CSS
.red {
background:#CC0000;
}
.green {
background:#00CC00;
}
HTML
<div id="clickme" class="red"> Click me </div>
JS
$('#clickme').click(function(){
$(this).toggleClass('red green');
});
戈登,你的代碼有湊它的一些問題。首先是你需要將this
換成$()
。這代表#clickme
元素。其次,您對背景的要求比您期望的要詳細得多。你可以用alert
或console.log返回什麼來找出爲什麼你的if語句不像你所期望的那樣。 As seen here.
更新:這裏是updated approach:
$('#clickme').click(function() {
var color = $(this).css('backgroundColor');
if(color == "rgb(0, 204, 0)") {
$(this).css('backgroundColor', '#CC0000');
}else{
$(this).css('backgroundColor', '#00CC00');
}
});
正如其他人所說,應該是$(本),而不是這個。爲了提高性能,我還建議將$(this)保存到另一個變量中。在這裏可能沒有必要這樣做,但這是一個很好的習慣,尤其是如果你在循環播放某些內容。事情是這樣的:
$('#clickme').click(function(){
var clickedElement = $(this);
var color = clickedElement.css('background');
if(color == '#cc0000'){
clickedElement.css('background', '#00CC00');
}else{
clickedElement.css('background', '#CC0000');
}
})
它應該是這樣的
$('#clickme').click(function(){
var color = $(this).css('background-color');
if(color == '#cc0000'){
$(this).css('background-color', '#00CC00');
}else{
$(this).css('background-color', '#CC0000');
}
});
返回的'背景'在Chrome中比在其十六進制值中更加詳細。 – veeTrain 2012-04-26 13:04:52
謝謝,我修改了它做得很快 – 2012-04-26 13:18:41
使用$(本),而不是這個。它代表選擇器。
Answers21241和iambriansreed有可愛的答案,這給你什麼試圖完成。
但是對於你的代碼,我想提供一些啓動建議。
首先,這裏是你原來的JavaScript代碼:
$('#clickme').click(function(){
var color = this.css('background');
if(color == '#cc0000'){
this.css('background', '#00CC00');
}else{
this.css('background', '#CC0000');
}
})
1)你必須包裝在$(function(){});
你的代碼,以便jQuery的頁面加載後執行。否則,你的JavaScript代碼會被執行滿載DOM之前,它根本不會在大多數情況下工作:
$(function(){
$('#clickme').click(function(){
var color = this.css('background-color');
alert(color);
if(color == '#CC0000'){
this.css('background-color', '#00CC00');
}else{
this.css('background-color', '#CC0000');
}
});
});
2)this.css()
將無法正常工作。 .css()
是一個jquery對象的函數,在這種情況下這不是一個jquery對象。您必須$()
包裝它從任何DOM元素構造一個jQuery對象:
$(function(){
$('#clickme').click(function(){
var color = $(this).css('background-color');
if(color == '#CC0000'){
$(this).css('background-color', '#00CC00');
}else{
$(this).css('background-color', '#CC0000');
}
});
});
3)顏色值可能是一些比你給的不同。瀏覽器主要將十六進制顏色值轉換爲RGB值,所得到的結果會有所不同。嘗試alert(color);
以獲得價值,並相應地更改您的代碼。
$(function(){
$('#clickme').click(function(){
var color = $(this).css('background-color');
alert(color);
if(color == '#CC0000' || color == 'rgb(204, 0, 0)'){
$(this).css('background-color', '#00CC00');
}else{
$(this).css('background-color', '#CC0000');
}
});
});
這裏是最後fiddle:
這將幫助你瞭解什麼是錯的。此外,這種方式並不是最佳做法。使用toggleClass並在CSS中設置您的元素的樣式。 Answers21241和iambriansreed給出了很好的方法。
我相信你混淆了你的if語句不正確。你問的顏色是紅色還是綠色,然後變成綠色;否則很好的答案 – veeTrain 2012-04-26 13:03:05
感謝您的警告。你是對的,它一定是204,0,0。我會解決它。 – SadullahCeran 2012-04-26 13:05:04
- 1. jQuery的。點擊()不工作
- 2. 點擊後jQuery不工作
- 3. jQuery:不選擇不工作點擊
- 4. 。點擊()不工作了jQuery的
- 5. jQuery點擊不工作/註冊
- 6. jQuery .on點擊第二次不工作
- 7. jQuery的點擊通過類工作不
- 8. jQuery的。對(「點擊」)不工作
- 9. jQuery的回調點擊()不工作
- 10. jQuery的點擊()函數不工作
- 11. jQuery綁定不工作點擊
- 12. 與點擊功能jQuery的不工作
- 13. jquery確認後點擊不工作
- 14. jQuery的不工作的點擊單選
- 15. 按鈕點擊不工作jquery
- 16. jQuery的。點擊(函數(){不工作
- 17. JQuery在點擊時不工作
- 18. 點擊不工作
- 19. 點擊jQuery的調用不工作的按鈕,點擊
- 20. jQuery的點擊功能不工作當點擊圖像
- 21. jQuery的。對( 「點擊」)後.off不工作( 「點擊」)
- 22. 檢測點擊不工作
- 23. $(「#提交」)點擊不工作:/
- 24. 的addEventListener點擊不工作
- 25. 我點擊不工作
- 26. 觸發點擊不工作
- 27. 點擊不工作在硒
- 28. NG點擊不工作
- 29. jQuery的$這不工作
- 30. 點擊完成與jQuery工作正常
歡迎來到Stack Overflow!將來,請不要*僅包含jsFiddle的鏈接。您的帖子應該獨立於任何其他資源;想想如果jsFiddle將來會發生什麼事情。 – Matt 2012-04-26 12:41:37
切換類比直接編輯樣式更簡單。 – iambriansreed 2012-04-26 12:47:40