So stellen Sie Breite und Höhe mithilfe von jQuery dynamisch ein

74

Ich möchte die Breite und Höhe des divElements dynamisch mit jQuery einstellen .

Ich habe versucht zu ersetzen

<div id="mainTable" style="width:100px; height:200px;"></div>

mit diesem:

$("#mainTable").css("width", "100");
$("#mainTable").css("height", "200");

aber es funktioniert nicht bei mir.

Bitte helfen Sie zu verstehen, warum.

Danke euch allen !

Das Problem war mit den Anführungszeichen auf Zahlen. Das funktioniert gut:

$("#mainTable").css("width", 100);
$("#mainTable").css("height", 200);
Mischa Moroshko
quelle
Ihr Code sieht in Ordnung aus. Vielleicht wäre es hilfreich, wenn Sie mehr von Ihrem JavaScript-Code veröffentlichen würden, um uns mehr Kontext zu geben.
Justin Ethier
Hallo Mischa, ich denke, Ihr Code ist in Ordnung, wenn Sie doppelte Anführungszeichen schreiben oder nicht. Ich habe Ihr Beispiel ausprobiert und es gibt in beiden Fällen das gleiche Ergebnis. Versuchen Sie dies jsfiddle.net/AUVs7/2
Amr Elnashar
Ihr Code funktioniert nicht! Die in <div> definierte Breite von 100px wird in .css () nicht durch width = 200px überschrieben!
Mischa Moroshko

Antworten:

113

Du kannst das:

$(function() {
  $("#mainTable").width(100).height(200);
});

Dies hat 2 Änderungen, es verwendet jetzt .width()und .height()führt den Code für das document.readyEreignis aus.

Ohne den $(function() { })Wrapper (oder $(document).ready(function() { })wenn Sie es vorziehen) ist Ihr Element möglicherweise noch nicht vorhanden $("#mainTable"). Hier sehen Sie ein Arbeitsbeispiel .

Nick Craver
quelle
19

Da @Misha Moroshko sich bereits selbst gepostet hat, funktioniert dies:

$("#mainTable").css("width", 100);
$("#mainTable").css("height", 200);

Diese Technik hat einen gewissen Vorteil gegenüber der von @Nick Craver akzeptierten Antwort - Sie können auch verschiedene Einheiten angeben:

$("#mainTable").css("width", "100%");

Daher ist die Methode von @Nick Craver für einige Benutzer möglicherweise die falsche Wahl . Über die jquery-API ( http://api.jquery.com/width/ ):

Der Unterschied zwischen .css (width) und .width () besteht darin, dass letzterer einen Pixelwert ohne Einheit (z. B. 400) zurückgibt, während ersterer einen Wert mit intakten Einheiten (z. B. 400px) zurückgibt. Die Methode .width () wird empfohlen, wenn die Breite eines Elements für eine mathematische Berechnung verwendet werden muss.

DomTomCat
quelle
Kein Kommentar von Nick ist richtig. Sie setzen die CSS, nicht die Inline-Stile
J-Roel
7

Versuche dies:

<div id="mainTable" style="width:100px; height:200px;"></div> 

$(document).ready(function() {
  $("#mainTable").width(100).height(200);
}) ;
Amr Elnashar
quelle
6

Ich habe unten Code versucht, es hat gut funktioniert

var modWidth = 250;
var modHeight = 150;

Beispiel unten: -

$( "#ContainerId .sDashboard li" ).width( modWidth ).height(modHeight);
user3867268
quelle
5

oder verwenden Sie diese Syntax:

$("#mainTable").css("width", "100px");
$("#mainTable").css("height", "200px");
mRizvandi
quelle
3

Ich habe alle oben genannten Vorschläge ausprobiert und keiner von ihnen hat für mich funktioniert. Sie haben die clientWidth und clientHeight geändert, nicht die tatsächliche Breite und Höhe.

In den jQuery-Dokumenten für die Methoden $ (). Width und height heißt es: "Beachten Sie, dass .width (" value ") die Inhaltsbreite der Box unabhängig vom Wert der CSS-Box-Sizing-Eigenschaft festlegt."

Der CSS-Ansatz hat das Gleiche getan, daher musste ich stattdessen die Methoden $ (). Attr () verwenden.

_canvas.attr('width', 100);
_canvas.attr('height', 200);

Ich weiß nicht, ob mich das betrifft, weil ich versucht habe, die Größe eines Elements zu ändern, und es ist etwas anders oder nicht.

KrisTC
quelle
0
$("#mainTable").css("width", "200px");
$("#mainTable").css("height", "2000px");
user14368519
quelle
2
Hallo, deine Antwort sieht gut aus, gibt aber keine Erklärung, warum es anders ist und warum es funktioniert. Es ist für uns alle hilfreich, wenn Sie erklären können, was Sie geändert haben und warum.
Exelian