2010-05-06 64 views
13

Với một phần tử có lề trái chưa biết, làm cách nào để tăng lề trái của nó ở một số có nghĩa là 100px?Làm cách nào để tăng/giảm số dư hiện tại ở một số bằng jquery?

Ví dụ:

giả bản gốc margin-left là 100px

kết quả mong đợi là 100px + 100px do đó 200px cuối cùng.

+0

Fetch giá trị hiện tại, thêm 100, hãy viết nó trở lại? Câu hỏi của bạn về cách tìm nạp giá trị hiện tại? –

Trả lời

30
$('#element-id').css('margin-left', function (index, curValue) { 
    return parseInt(curValue, 10) + 100 + 'px'; 
}); 

curValue sẽ bao gồm 'px' ở cuối, vì vậy bạn sẽ kết thúc với NaN hoặc 100px100px như kết quả của bạn mà không sử dụng parseInt đầu tiên.

+0

đây chính xác là những gì tôi muốn – Edward

+0

+1 Câu trả lời của bạn là gương mẫu. Cảm ơn bạn! –

+0

Chỉ để được ở bên an toàn, bạn có thể chắc chắn rằng bạn hiện đang có một số lợi nhuận trước khi thêm. 'var actualMargin = parseInt (curValue); nếu (isNaN (actualMargin)) { actualMargin = 0; } ' – Melanie

19

A/cách ngắn gọn nhanh chóng để làm điều này:

$('#IDHere').animate({marginLeft: '+=100px'}, 0); 

Here's a quick example of this. Các 0 làm cho điều này xảy ra trong một khung duy nhất, nếu bạn thực sự muốn tạo ảnh động, hãy thay đổi 0 thành số mili giây bạn muốn, like this.

+0

tính năng này chỉ hoạt động cho animate, nhưng tôi không muốn tạo ảnh động – Edward

+1

@Relax - '0' không phải là hoạt ảnh, đó là bản cập nhật CSS 1 khung hình, không phải nhanh hơn khi nhấp vào liên kết và xem thao tác này hơn là loại bỏ nó ngay lập tức? Đó là một cách tiếp cận tồi tệ, và bạn sẽ bỏ lỡ việc học được rất nhiều điều mới theo cách đó, chỉ cần một cái gì đó để suy nghĩ về. –

+0

Tôi thích thay đổi giá trị, nhưng tôi nghĩ cách này cũng sẽ hoạt động và ý tưởng của bạn sáng tạo, :) – Edward

1
$("p").css({marginLeft: function(index, value) { 
    return parseFloat(value) + 100; 
}}); 
4

Bạn chỉ có thể đạt được điều này chỉ sử dụng .css (xem ví dụ dưới đây)

$('#element-id').css('margin-left', '+=100px'); 
Các vấn đề liên quan