2011-09-28 107 views
1

我有一個奇怪的問題與css()函數。這是我的代碼片段。css()函數調用靜默失敗?

console.log('' + $(this).css('left') + ':' + $(this).css('top')); 
console.log('Desired position - ' + return_to_left + ':' + return_to_top); 
$(this).css('top', return_to_top + 'px'); 
$(this).css('left', return_to_left + 'px'); 
console.log('Finally: ' + $(this).css('left') + ':' + $(this).css('top')); 

我在控制檯上得到的輸出是這樣的。

458px:2113px 
Desired position - 448px:2102px; 
Finally: 458px:2113px; 

任何人都可以提出爲什麼會發生這種情況嗎?我試着嘗試'!重要'。沒有幫助。

(同樣,對於背景下,這個代碼是一個動畫後的回調函數的一部分。它試圖元素位置回到它是動畫開始之前。)

謝謝您的幫助。

回答

5

發現問題!

此:

console.log('Desired position - ' + return_to_left + ':' + return_to_top); 

輸出...

Desired position - 448px:2102px; 

因此你的變量return_to_leftreturn_to_top已經在最後的px字符串。

你的CSS調用如下:

$(this).css('top', '448pxpx'); 
$(this).css('left', '2102pxpx'); 

哪個都不行! :p從css調用結束時刪除+ 'px'

+0

謝謝! :)這很明顯......該死! – Navneet

+0

哈哈,不用擔心。在我幫助你時,你可能想按下答案旁邊的小勾,將其標記爲正確的答案。如果你這樣做,如果你想在未來提出更多的問題,它可以幫助其他人來解決相同的問題,並提高你在網站上的可信度。 –

1

return_to_left和return_to_top已經包含'px',但是您第二次追加它。

$(this).css('top', return_to_top); 
$(this).css('left', return_to_left); 
1

我試過了你發佈的代碼。 它的工作。

是否有可能在你的變量return_to_left和return_to_top已經有一個「px」是?

我把這個變量:

return_to_left = 100; 

它的工作。 我認爲你的內容將被保存爲動態。 所以,如果你通過 $(本)的.css( '左')

加載的相關信息,然後就會出現一個已經 「PX」

試試這個代碼,而不是你的:

$(this).css('top', return_to_top); 
$(this).css('left', return_to_left); 

我不知道你的完整代碼,但也許這會解決你的問題