วิธีการกำหนดหลายคุณสมบัติ CSS ใน jQuery?


504

มีวิธีการสร้างประโยคใด ๆ ใน jQuery เพื่อกำหนดแอตทริบิวต์ CSS หลายรายการโดยไม่ต้องใส่สตริงทุกอย่างออกทางด้านขวาดังนี้:

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

ถ้าคุณบอกว่า 20 รหัสของคุณจะอ่านยากการแก้ปัญหาใด ๆ

จาก jQuery API ตัวอย่างเช่น jQuery เข้าใจและส่งคืนค่าที่ถูกต้องสำหรับทั้งคู่

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

และ

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

โปรดสังเกตว่าด้วยสัญกรณ์ DOM เครื่องหมายอัญประกาศรอบชื่อคุณสมบัตินั้นเป็นทางเลือกแต่ด้วยสัญกรณ์ CSS ที่ต้องการเนื่องจากเครื่องหมายขีดคั่นในชื่อ

คำตอบ:


928

ดีกว่าที่จะเพียงแค่ใช้.addClass()แม้ว่าคุณจะมี 1 หรือมากกว่า บำรุงรักษาได้มากกว่าและอ่านได้

หากคุณมีความต้องการที่จะทำหลาย ๆ คุณสมบัติของ CSS ให้ทำดังนี้:

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

NB! ต้องอ้าง
คุณสมบัติ CSS ใด ๆ ที่มีขีดกลาง
ฉันได้ใส่เครื่องหมายคำพูดไว้ดังนั้นจึงไม่มีใครจำเป็นต้องชี้แจงว่าและรหัสจะทำงานได้ 100%


28
สิ่งนี้ไม่ถูกต้องจริง - คุณสมบัติต้องมีเครื่องหมายคำพูดล้อมรอบพวกเขารวมถึงค่า ดูคำตอบของ Dave Mankoff
rlb.usa

16
@ rlb.usa จริง ๆ แล้วมันไม่ถูกต้องjsfiddle.net/ERkXP ใช้งานได้ ขอบคุณสำหรับ downvote!
redsquare

9
ทำไมบนโลกจึงเสนอและแม้กระทั่งโต้แย้งสำหรับไวยากรณ์ที่ไม่ได้มาตรฐาน! เพียงเพิ่มสไตล์ด้วย '-' ie font-sizeและมันล้มเหลว ถ้ามันเกี่ยวกับการพิสูจน์ขีด จำกัด ก็มี$('div').css({ width : 300, height: 40 }); ผลเช่นกัน
อิสระ

26
หากคุณสมบัติ CSS มีอักขระเส้นประ (เช่น. text-overflow) คุณต้องใส่เครื่องหมายคำพูดรอบ ๆ คุณสมบัติ นั่นคือสิ่งที่ rlb.usa และ Jonas กำลังพูดถึงฉันคิดว่า
แดน

4
@redsquare โปรดลองเพิ่มคำตอบของคุณต่อไปนี้ จากjQuery API :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
เพื่อให้ได้ผลคุณต้องเปลี่ยนไวยากรณ์บางส่วน: $ ('# message') css ({width: '550px', height: '300px', 'font-size': '8pt'});
Edward Tanguay

16
อื่น ๆ ขอบคุณทุกคนที่เคยอ่านเอกสารเกี่ยวกับ jquery? ค่าตัวเลขจะถูกแปลงเป็นค่าพิกเซลโดยอัตโนมัติ kthx
Jimmy

5
ใช่มีปัญหาอะไรที่นี่? width: 550ถูกต้องสมบูรณ์
rfunduk

ฉันคิดว่าคุณสามารถใช้งานได้fontSizeโดยไม่ต้องใส่เครื่องหมายคำพูด ... คำถามของฉันคือ .... คุณจะตั้งค่าheightอย่างไรและwidthสมมติว่า ... เป็นค่าเดียวกัน ... จะเป็น.css({ { width, height} : 300 })อย่างไร
Alex Grey

5
@alexgray ไม่มีโดยตรงวิธีการทำเช่นนี้ แต่คุณสามารถตั้งค่าพวกเขาแต่ละตัวแปรเดียวกัน:var x = 100; $el.css({width: x, height: x});
dave Mankoff

39

การใช้ออบเจ็กต์ธรรมดาคุณสามารถจับคู่สตริงที่แสดงชื่อคุณสมบัติด้วยค่าที่เกี่ยวข้อง ตัวอย่างเช่นการเปลี่ยนสีพื้นหลังและการทำให้ข้อความโดดเด่นยิ่งขึ้นจะมีลักษณะเช่นนี้:

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

หรือคุณสามารถใช้ชื่อคุณสมบัติ JavaScript ได้เช่นกัน:

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

ข้อมูลเพิ่มเติมสามารถพบได้ในเอกสารของ jQuery




10

เห็นด้วยกับ redsquare แต่มันก็คุ้มค่าที่จะพูดถึงว่าถ้าคุณมีคุณสมบัติสองคำเหมือนtext-alignคุณจะทำสิ่งนี้:

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




6

คุณสามารถลองสิ่งนี้

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

1
นี่ไม่ใช่วิธีการที่ดีครับ เป็นการดีกว่าที่จะส่งประเภทผู้ใช้ json
Awais Qarni


2

ถ้าคุณต้องการเปลี่ยนหลายแอตทริบิวต์ css คุณต้องใช้โครงสร้างวัตถุดังนี้

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

แต่มันแย่ลงเมื่อเราต้องการเปลี่ยนสไตล์มากมายดังนั้นสิ่งที่ฉันแนะนำให้คุณคือการเพิ่มคลาสแทนการเปลี่ยน CSS โดยใช้ jQuery และการเพิ่มคลาสก็สามารถอ่านได้มากขึ้นเช่นกัน

ดูตัวอย่างด้านล่าง:

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');
});

ข้อดีอย่างหนึ่งของตัวอย่างหลังในอดีตคือถ้าคุณต้องการเพิ่ม css onclickบางอย่างและต้องการลบ css นั้นในการคลิกครั้งที่สองจากนั้นในตัวอย่างหลังคุณสามารถใช้.toggleClass('custom-class')

ในตัวอย่างก่อนหน้านี้คุณต้องตั้งค่า css ทั้งหมดด้วยค่าต่าง ๆ ที่คุณตั้งไว้ก่อนหน้าและมันจะซับซ้อนดังนั้นการใช้คลาสตัวเลือกจะเป็นทางออกที่ดีกว่า


0

คุณสามารถใช้ได้

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

วิธีที่ดีที่สุดคือใช้ $ ('selector'). addClass ('custom-class') และ

.custom-class{
width:16px,
color: green;
margin: 0;
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.