[英]jQuery cannot assign to a function result
我在以下代碼中收到上述標題中的錯誤:
$j(".table").delegate('td','click', function(e) {
//alert($j(this).parent().css('background-color'));
if ($j(this).parent().css('background-color') == 'transparent')
$j(this).parent().css('background-color') = '#eee';
else {
$j(this).parent().css('background-color') = 'transparent';
}
});
我不明白為什么我會收到這個錯誤,因為我已經確定我使用賦值運算符==
來比較字符串
您的問題有兩個問題:第一個問題已由@Mike Vranckx回答 ,正確使用.css()
setter正在傳遞第二個參數以設置為值。
另一個問題是你的情況永遠不會成真,我將在這個答案中解決。 如果你按我建議的方式修復它,你將不需要.css()
。
從getComputedStyle
/ jQuery的.css()
返回的計算CSS值並不完全是您在代碼中編寫的 - 它們在解析為CSSOM時會遭受轉換。
例如,在Chrome中:
body { background-color: transparent; }
console.log( $('body').css('background-color') ); //returns "rgba(0, 0, 0, 0)"
這就是你的$(...).('background-color') == 'transparent'
條件總是假的原因。
最干凈和跨瀏覽器的解決方案是使用類( .addClass()
, .addClass()
removeClass()
, toggleClass()
)應用樣式,並使用.hasClass()
進行條件檢查。
在你的情況下, .toggleClass
應該足夠了。 這是編寫邏輯( 小提琴 )的簡單方法:
$j(".table").on('click', 'td', function() {
$j(this).parent().toggleClass('bg-gray');
});
.bg-gray {
background: #eee;
}
要設置/更改background-color屬性,需要將其作為第二個參數傳遞:
$j(this).parent().css('background-color', '#eee');
雖然比較使用背景顏色更好地使用這樣的rgba
$j(this).parent().css('background-color', 'rgb(0,0,0)');
要為css賦值,請將值作為第二個參數傳遞。
以下行將更改為
$j(this).parent().css('background-color') = '#eee';
以下行
$j(this).parent().css('background-color','#eee');
使用CSS類會更干凈,更快速,更容易修改:
.table td { background-color: transparent; }
.foo { background-color: #EEE; }
和
$j( '.table' ).delegate( 'td', 'click', function() {
$( this ).toggleClass( 'foo' );
});
同時避免使用像“table”這樣的保留字來表示類名,這很令人困惑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.