Làm cách nào để xác định nhiều thuộc tính CSS trong jQuery?


504

Có cách thức cú pháp nào trong jQuery để xác định nhiều thuộc tính CSS mà không xâu chuỗi mọi thứ bên phải như thế này không:

$("#message").css("width", "550px").css("height", "300px").css("font-size", "8pt");

Nếu bạn có, giả sử, 20 trong số các mã của bạn sẽ trở nên khó đọc, giải pháp nào?

Ví dụ, từ API jQuery, jQuery hiểu và trả về giá trị chính xác cho cả hai

.css({ "background-color": "#ffe", "border-left": "5px solid #ccc" }) 

.css({backgroundColor: "#ffe", borderLeft: "5px solid #ccc" }).

Lưu ý rằng với ký hiệu DOM, dấu ngoặc kép quanh tên thuộc tính là tùy chọn , nhưng với ký hiệu CSS, chúng được yêu cầu do dấu gạch nối trong tên.

Câu trả lời:


929

Tốt hơn là chỉ sử dụng .addClass()ngay cả khi bạn có 1 hoặc nhiều hơn. Dễ bảo trì và dễ đọc hơn.

Nếu bạn thực sự có nhu cầu làm nhiều thuộc tính CSS thì hãy sử dụng như sau:

.css({
   'font-size' : '10px',
   'width' : '30px',
   'height' : '10px'
});

Lưu ý!
Bất kỳ thuộc tính CSS nào có dấu gạch nối cần được trích dẫn.
Tôi đã đặt dấu ngoặc kép để không ai cần phải làm rõ điều đó và mã sẽ có chức năng 100%.


28
Điều này thực sự không chính xác - các thuộc tính cần trích dẫn xung quanh chúng cũng như các giá trị. Xem câu trả lời của Dave Mankoff.
rlb.usa

16
@ rlb.usa thực sự không phải là không chính xác, các công việc trên jsfiddle.net/ERkXP . Cảm ơn các downvote!
redsapes

9
Tại sao trên trái đất đề xuất và thậm chí tranh luận cho cú pháp không chuẩn như vậy! Chỉ cần thêm một kiểu với '-' tức là font-sizekhông thành công. Nếu đó là về giới hạn chứng minh, thì cũng có $('div').css({ width : 300, height: 40 }); giá trị.
Độc lập

26
Nếu thuộc tính CSS có ký tự gạch ngang (tức là tràn văn bản) thì bạn cần đặt dấu ngoặc kép quanh thuộc tính. Đó là những gì rlb.usa và Jonas đang nói về tôi nghĩ.
dan

4
@redsapes Vui lòng xem xét thêm phần sau vào câu trả lời của bạn. Từ API jQuery :For example, jQuery understands and returns the correct value for both .css({ "background-color": "#ffe", "border-left": "5px solid #ccc" }) and .css({backgroundColor: "#ffe", borderLeft: "5px solid #ccc" }). Notice that with the DOM notation, quotation marks around the property names are optional, but with CSS notation they're required due to the hyphen in the name.
zanetu


68
$('#message').css({ width: 550, height: 300, 'font-size': '8pt' });

3
để làm việc đó, bạn phải thay đổi một số cú pháp trên nó: $ ('# message'). css ({width: '550px', height: '300px', 'font-size': '8pt'});
Edward Tanguay

16
erm, nhờ tất cả các downvoters lái xe không bao giờ đọc tài liệu jquery? giá trị số được chuyển đổi thành giá trị pixel tự động kthx.
Jimmy

5
Phải, vấn đề ở đây là gì? width: 550là hoàn toàn hợp lệ.
rfunduk

Tôi nghĩ rằng bạn cũng có thể sử dụng fontSizemà không có dấu ngoặc kép ... câu hỏi của tôi là .... làm thế nào để bạn thiết lập height, và width, hãy nói ... với giá trị CÙNG .... nó sẽ .css({ { width, height} : 300 })như thế nào?
Alex Gray

5
@alexgray không có cách nào trực tiếp để làm điều này, nhưng bạn có thể đặt chúng cho cùng một biến:var x = 100; $el.css({width: x, height: x});
dave mankoff

39

Sử dụng một đối tượng đơn giản, bạn có thể ghép các chuỗi đại diện cho tên thuộc tính với các giá trị tương ứng của chúng. Thay đổi màu nền và làm cho văn bản đậm nét hơn, ví dụ như sau:

$("#message").css({
    "background-color": "#0F0", 
    "font-weight"     : "bolder"
});

Ngoài ra, bạn cũng có thể sử dụng tên thuộc tính JavaScript:

$("#message").css({
    backgroundColor: "rgb(128, 115, 94)",
    fontWeight     : "700"
});

Thông tin thêm có thể được tìm thấy trong tài liệu của jQuery .


18

vui lòng thử cái này

$(document).ready(function(){
    $('#message').css({"color":"red","font-family":"verdana"});
})

16

Bạn cũng có thể sử dụng attrcùng với style:

$('#message').attr("style", "width:550; height:300; font-size:8px" );

10

Đồng ý với redsapes tuy nhiên điều đáng nói là nếu bạn có một tài sản hai từ như text-alignbạn sẽ làm điều này:

$("#message").css({ width: '30px', height: '10px', 'text-align': 'center'});


8

Thử cái này

$(element).css({
    "propertyName1":"propertyValue1",
    "propertyName2":"propertyValue2"
})

7

Kịch bản

 $(IDname).css({
    "background":"#000",
    "color":"#000"
})

Html

<div id="hello"></div>

6

Bạn có thể thử cái này

$("p:first").css("background-color", "#B2E0FF").css("border", "3px solid red");

1
Đây không phải là một cách tiếp cận tốt anh chàng. Tốt hơn hết là gửi loại người dùng json
Awais Qarni

6

Cách tốt nhất để sử dụng biến

var style1 = {
   'font-size' : '10px',
   'width' : '30px',
   'height' : '10px'
};
$("#message").css(style1);

2

Nếu bạn muốn thay đổi nhiều thuộc tính css thì bạn phải sử dụng cấu trúc đối tượng như dưới đây:

$(document).ready(function(){
   $('#message').css({
                   "background-color": "#0F0",
                   "color":"red",
                   "font-family":"verdana"
                });
});

nhưng nó trở nên tồi tệ hơn khi chúng tôi muốn thay đổi nhiều phong cách , vì vậy những gì tôi đề xuất với bạn là thêm một lớp thay vì thay đổi css bằng jQuery và thêm một lớp cũng dễ đọc hơn.

xem ví dụ dưới đây:

CSS

<style>
    .custom-class{
       font-weight: bold;
       background: #f5f5f5;
       text-align: center;
       font-size: 18px;
       color:red;
    }
</style>

jQuery

$(document).ready(function(){
   $('#message').addclass('custom-class');
});

Một lợi thế của ví dụ sau so với trước là nếu bạn muốn thêm một số css onclickcủa một cái gì đó và muốn loại bỏ css đó vào lần nhấp thứ hai thì trong ví dụ sau bạn có thể sử dụng.toggleClass('custom-class')

trong ví dụ trước đây bạn phải đặt tất cả css với các giá trị khác nhau mà bạn đã đặt trước đó và nó sẽ phức tạp, vì vậy sử dụng tùy chọn lớp sẽ là giải pháp tốt hơn.


0

Bạn có thể dùng

$('selector').css({'width:'16px', 'color': 'green', 'margin': '0'});

Cách tốt nhất là sử dụng $ ('bộ chọn'). AddClass ('lớp tùy chỉnh') và

.custom-class{
width:16px,
color: green;
margin: 0;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.