2011-06-24 96 views
3

我喜歡40 foo在頁面上,並且每個在另一個函數中分配一個左/頂值。有條件地設置屬性jQuery.css()

$('.foo').css({ 
    top: isOn ? current_top_value_here : 500, 
    left: isOn ? current_left_value_here : 500 
}); 

所以,我要離開頂部&左性能未修改如果isOn是真實的。我怎樣才能做到這一點?

+0

什麼是'isOn'? Javascript變量? –

+0

是的,它可以是真或假 – Alex

回答

5

這種方式可以保證,如果它需要他們只添加。首先使用要分配的值設置對象,並有條件地添加更多。然後你可以將對象傳遞給你的.css()

var cssProperties={ 
    'color' : 'yellow', 
    ... 
}; 

if (isOn) { 
    cssProperties.top=500; 
    cssProperties.left=500; 
    /* alternative: $.extend(cssProperties, { 'top': 500, 'left': 500 }); */ 
} 

$('.foo').css(cssProperties); 
+0

如果我誤解了某些內容,請更多地展示您的代碼並更詳細地解釋您需要的內容。可能有很好的選擇。 – kapa

2

最好的方法可能只是不叫它。如果你有你在同一個語句設置其他的CSS,只是把它分解開:

if(!isOn){ 
    $('.foo').css({ 
    top: 500, 
    left: 500 
    }); 
} 

$('.foo').css({ 
    // other stuff 
}); 
+0

但這意味着我必須複製我的代碼,添加像20行+。我也有一個動畫函數,我需要有條件地動畫這些屬性... – Alex

+0

至少先保存jQuery集合,兩次運行'$('。foo')'不是一個好習慣。 – kapa

+0

@baz是,只是說明了這個想法,沒有優化它。無論如何,你的想法是更好的,現在這個問題進一步解釋。 –

相關問題