Jak zmienić CSS za pomocą jQuery?

136

Próbuję zmienić CSS za pomocą jQuery:

$(init);
    
function init() {
    $("h1").css("backgroundColor", "yellow");
    $("#myParagraph").css({"backgroundColor":"black","color":"white");
    $(".bordered").css("border", "1px solid black");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="bordered">
    <h1>Header</h1>
    <p id="myParagraph">This is some paragraph text</p>
</div>

Czego tu brakuje?

user449914
źródło
2
to zostało naprawione. Jak odpowiedział poniżej, istnieją dwa rozwiązania: (1) usuń nawias klamrowy i zmień backgroundColor na background-color (klasa css) lub - podstawowy problem) umieść brakujący nawias klamrowy na końcu i użyj notacji DOM / JS również Pracuje. DZIĘKUJĘ WSZYSTKIM!
user449914
1
manipulowanie CSS w javascript można uznać za złą praktykę. Rozważ dodanie / usunięcie / przełączanie klas.
Austin

Odpowiedzi:

213

Zignoruj ​​osoby, które sugerują, że problemem jest nazwa nieruchomości. Dokumentacja interfejsu API jQuery wyraźnie stwierdza, że ​​dopuszczalna jest każda notacja: http://api.jquery.com/css/

Rzeczywisty problem polega na tym, że w tej linii brakuje zamykającego nawiasu klamrowego:

$("#myParagraph").css({"backgroundColor":"black","color":"white");

Zmień to na:

$("#myParagraph").css({"backgroundColor": "black", "color": "white"});

Oto działające demo: http://jsfiddle.net/YPYz8/

$(init);
    
function init() {
    $("h1").css("backgroundColor", "yellow");
    $("#myParagraph").css({ "backgroundColor": "black", "color": "white" });
    $(".bordered").css("border", "1px solid black");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="bordered">
    <h1>Header</h1>
    <p id="myParagraph">This is some paragraph text</p>
</div>

Ender
źródło
Jak dodać wartość jako zmienną, na przykład paddingTopjako liczbę x pikseli? Każdy rodzaj składni, którego próbowałem, powodował błąd.
Mentalist
Nieważne. Rozumiem:$("#main").css({paddingTop: (var_name+20) + "px"});
Mentalista
@Ender: użycie css()całego css jest resetowane i pozostaje tylko css wspomniany w tej funkcji. Jak mogę tylko dodać css, który ma zostać zmieniony i zachować poprzedni css?
SimpleGuy
53

Możesz to zrobić:

$("h1").css("background-color", "yellow");

Lub:

$("h1").css({backgroundColor: "yellow"});
Sarfraz
źródło
3
{"backgroundColor": "yellow"}jest ważny, choć zbędny.
Tgr
@ user449914: nie musisz umieszczać cudzysłowów wokół nazw właściwości w literale obiektu - {foo: "bar"}to to samo, co {"foo": "bar"}.
Tgr
25

Aby trochę wyjaśnić, ponieważ niektóre odpowiedzi zawierają nieprawidłowe informacje:


Metoda jQuery .css () pozwala w wielu przypadkach na użycie notacji DOM lub CSS. Tak więc obie backgroundColori background-colorwykonają zadanie.

Dodatkowo, kiedy dzwonisz .css()z argumentami, masz dwie możliwości wyboru, jakie mogą być argumenty. Mogą to być 2 ciągi znaków oddzielone przecinkami reprezentujące właściwość CSS i jej wartość lub obiekt JavaScript zawierający jedną lub więcej par klucz-wartość właściwości i wartości CSS.

Podsumowując, jedyną wadą twojego kodu jest brak }. Wiersz powinien brzmieć:

$("#myParagraph").css({"backgroundColor":"black","color":"white"});

Nie możesz zostawić nawiasów klamrowych, ale możesz zostawić cudzysłowy poza backgroundColori color. Jeśli używasz background-color, musisz umieścić go w cudzysłowie z powodu łącznika.

Ogólnie rzecz biorąc, dobrym zwyczajem jest cytowanie obiektów Javascript, ponieważ mogą pojawić się problemy, jeśli nie zacytujesz istniejącego słowa kluczowego .


Ostatnia uwaga jest taka, że o jQuery .ready () metody

$(handler);

jest synonimem :

$(document).ready(handler);

a także trzecią niezalecaną formą.

Oznacza to, że $(init)jest to całkowicie poprawne, ponieważ initw tym przypadku jest to program obsługi. Więc initzostanie zwolniony, gdy DOM zostanie zbudowany.

Peter Ajtai
źródło
10

Jeśli używasz właściwości Multiple css z jQuery, musisz użyć nawiasu klamrowego na początku i na końcu. Brakuje kończącego nawiasu klamrowego.

function init() {
 $("h1").css("backgroundColor", "yellow");

 $("#myParagraph").css({"background-color":"black","color":"white"});

 $(".bordered").css("border", "1px solid black");
}

Możesz rzucić okiem na ten samouczek selektora jQuery CSS .

Sadi
źródło
7

Ta .css()metoda sprawia, że ​​wyszukiwanie i ustawianie właściwości CSS jest bardzo proste, a w połączeniu z innymi metodami, takimi jak .animate (), możesz uzyskać fajne efekty na swojej stronie.

W najprostszej postaci .css()metoda może ustawić pojedynczą właściwość CSS dla określonego zestawu dopasowanych elementów. Po prostu przekazujesz właściwość i wartość jako ciągi znaków, a właściwości CSS elementu są zmieniane.

$('.example').css('background-color', 'red');

Spowoduje to ustawienie właściwości „background-color” na „red” dla każdego elementu, który ma klasę „example”.

Ale nie jesteś ograniczony do zmiany jednej właściwości na raz. Jasne, możesz dodać kilka identycznych obiektów jQuery, z których każdy zmienia tylko jedną właściwość na raz, ale powoduje to kilka niepotrzebnych wywołań DOM i jest to dużo powtarzającego się kodu.

Zamiast tego można przekazać do .css()metody obiekt JavaScript, który zawiera właściwości i wartości w postaci par klucz / wartość. W ten sposób każda właściwość zostanie ustawiona w obiekcie jQuery jednocześnie.

$('.example').css({
    'background-color': 'red',
    'border' : '1px solid red',
    'color' : 'white',
    'font-size': '32px',
    'text-align' : 'center',
    'display' : 'inline-block'
});

Spowoduje to zmianę wszystkich tych właściwości CSS w elementach „.example”.

Jasio
źródło
3

Chciałem tylko dodać, że używając liczb dla wartości metodą css, musisz dodać je poza apostrofem, a następnie dodać jednostkę CSS w apostrofach.

$('.block').css('width',50 + '%');

lub

var $block = $('.block')    

$block.css({ 'width': 50 + '%', 'height': 4 + 'em', 'background': '#FFDAB9' });
lowtechsun
źródło
1
<!DOCTYPE html>
<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script>
      $( document ).ready(function() {
         $('h1').css('color','#3498db');
      });
    </script>
    <style>
      .wrapper{
        height:450px;
        background:#ededed;
        text-align:center
      }
    </style>
  </head>
  <body>
    <div class="wrapper">
      <h1>Title</h1>
    </div>
  </body>
</html>
Nikit Barochiya
źródło
1

$ (". radioValue"). css ({"background-color": "- webkit-linear-gradient (# e9e9e9, rgba (255, 255, 255, 0.43137254901960786), # e9e9e9)", "color": "# 454545 ”,„ padding ”:„ 8px ”});

Daooji katara
źródło
2
Małe wyjaśnienie też powinno pomóc.
timiTao
1

$(function(){ 
$('.bordered').css({
"border":"1px solid #EFEFEF",
"margin":"0 auto",
"width":"80%"
});

$('h1').css({
"margin-left":"10px"
});

$('#myParagraph').css({
"margin-left":"10px",
"font-family":"sans-serif"
});

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="bordered">
<h1>Header</h1>
<p id="myParagraph">This is some paragraph text</p>
</div>


źródło
Chociaż ten kod może odpowiedzieć na pytanie, dostarczenie informacji o tym, jak i dlaczego rozwiązuje problem, poprawia jego długoterminową wartość.
L_J
0

niepoprawny kod:$("#myParagraph").css({"backgroundColor":"black","color":"white");

jej brakuje "}"powhite"

zmień to na to

 $("#myParagraph").css({"background-color":"black","color":"white"});
galexy
źródło
8
Właśnie powtórzyłeś najpopularniejszą odpowiedź, zaledwie 3 i pół roku później.
Curtis Patrick