javascript - 无法将 CSS 更改应用于通过 JS/JQuery 动态创建

标签 javascript jquery html css

我一直在尝试更改使用 JS/JQuery 创建的“.square”div 的大小。我已经成功地改变了容器 div 的大小,但是使用完全相同的代码对动态创建的 .square div 不起作用,尽管能够以其他方式将事件应用到 .square div。 这两天我一直在努力理解这个问题,并且一直在编写和重写解决方案,但我认为我目前的技能忽略了一个非常简单的答案。

目的是让 .square div 的大小由容器中的正方形数量决定。方 block 越多,.square div css 越小。

感谢任何人可以提供的帮助。

    $(document).ready(function() {

      var create = function(king) {
        return $("#container").prepend("<div class='square' id=king></div>");
      }

      var sLoad = function() {
        for (i = 0; i < 16; i++) {
          $("#16").click(function() {
            $("#container").prepend("<div class='square'></div>");
          });
        };
      };
      sLoad();

      $("#clear").on("click", function() {
        $(".square").remove();
        num = prompt("How many squares would you like?");
        //		var containerSize = function(){
        //			var siz = 112 * num;
        //			$("#container").css({"height": siz+15+"px" , "width": siz+"px"});
        //		}
        //		containerSize()
        $(".square").css({
          "height": "50px",
          "width": "50px"
        });
        var make = function(num) {
          return num * num;
        };
        //var squareSize = function(){
        //	var sqr = 600 / make(num);
        //	$(".square").css({"height":sqr+"px" , "width":sqr+"px"});
        //};
        //squareSize();

        for (i = 0; i < make(num); i++) {
          $("#container").prepend("<div class='square'></div>");
        };
      });
      //	$(".button").click(function(){
      //		

      //making the square dis and reappear
      $("#container").on("mouseenter", function() {
        $(".square").mouseenter(function() {
            $(this).fadeTo("fast", 0);
          }),
          $(".square").mouseleave(function() {
            $(this).fadeTo("fast", 1);
          });
      });
    });
#menuContainer {
  height: 45px;
  width: 50%;
  margin: auto;
}
#container {
  width: 600px;
  height: 600px;
  border: 1px blue dotted;
  border-radius: 2%;
  margin: auto;
  padding: 0px;
}
#controlDiv {
  height: 30px;
  width: 30px;
  border: 1px dashed red;
  margin: auto;
  margin-top: 50%;
  background-color: black;
}
.square {
  width: 100px;
  height: 100px;
  background-color: grey;
  border: 1px black dashed;
  border-radius: 3%;
  margin: 5px 5px 5px 5px;
  display: inline-block;
}
.button {
  height: 27px;
  width: 70px;
  background-color: gold;
  border: solid 1px yellow;
  text-decoration-color: blue;
  border-radius: 5%;
  text-align: center;
  padding-top: 7px;
  /*margin: auto;*/
  margin-bottom: 4px;
  display: inline-block;
}
<!DOCTYPE html>
<html>

<head>
  <title>Page Title</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>

<body>

  <div id="menuContainer">
    <div class="button" id="16">Click</div>
    <div class="button" id="clear">Clear</div>
  </div>

  <div id="container">
    <!--	<div id="controlDiv"></div> -->
  </div>

  <!--<div class="square"></div>-->

</body>

</html>

最佳答案

这个 fiddle 应该可以工作:https://jsfiddle.net/x0x9rv30/2/

您在删除的元素上应用了 CSS,您需要先创建元素,然后才能在其上应用 CSS。

我刚刚交换了两个代码块:

之前

$(".square").remove();

$(".square").css({"height":"50px" , "width": "50px"});

for (i = 0; i < make(num); i++){            
    $("#container").prepend("<div class='square'></div>");
};

之后

$(".square").remove();

for (i = 0; i < make(num); i++){            
    $("#container").prepend("<div class='square'></div>");
};

$(".square").css({"height":"50px" , "width": "50px"});

关于javascript - 无法将 CSS 更改应用于通过 JS/JQuery 动态创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38331058/

相关文章:

html - 表格单元格使用的宽度比它需要的要多得多

JavaScript 刷新而不是更改页面

javascript - jquery 追加大量 html(出现 "unterminated string literal"或 "bad escape"错误)

javascript - 将输入文本乘以 2,在另一个输入中回答

javascript - 调用对象函数: "Script error. (: line 0)" in p5. js在线编辑器时出现问题

javascript - Angular $http无法发送内容类型 header

javascript - h1 标签不随 bootstrap 改变颜色

javascript - 第一次立即执行 setInterval 函数

受 float div 影响的 jQuery 标题栏高度

javascript - 单击链接打开页面后显示页面中隐藏的div