jquery - 如何在新的动态元素上应用 bootstrap css?

标签 jquery html css twitter-bootstrap

如何在新的动态元素上应用 bootstrap css?

我在使用动态 dom 元素的 boostrap 时遇到问题。

如果我加载带有整个 html 的页面,它可以工作,但是当添加新的 div 时,我不能使用 Bootstrap 类。

为了测试,我添加了一个类来更改背景颜色,效果很好。

我将代码添加到 jsfiddle:https://jsfiddle.net/Lpw0726j/

在那里我取消了 div 的注释。

function getFirstDay(theYear, theMonth) {
  var firstDate = new Date(theYear, theMonth, 1)
  return firstDate.getDay()
}


var getDaysInMonth = function(month, year) {
  return new Date(year, month, 0).getDate();
}

$(function() {
  var firstDay = getFirstDay(2018, 2);
  var howMany = getDaysInMonth(2, 2018);

  var dayCounter = 1;
  var done = false;
  var weekCounter = 0;

  while (!done) {
    weekCounter++;
    week = "week" + weekCounter;
    jQuery('<div/>', {
      id: week
    }).appendTo('.container');

    for (var i = 0; i < 7; i++) {
      if ($(week).siblings().length == 1 && i < firstDay) {
        newC.innerHTML = ""
        jQuery('<div/>', {
          id: week,
          class: 'col border',
          text: "x"
        }).appendTo('#week' + weekCounter);
        continue
      }
      if (dayCounter == howMany) {
        // no more rows after this one
        done = true
      }

      if (dayCounter <= howMany) {
        dayCounter++;
        jQuery('<div/>', {
          //id: week,
          class: 'col border',
          text: dayCounter
        }).addClass('col border').appendTo('#week' + weekCounter);
      } else {

      }
    }

  }
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">

<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<div class="container">
  <h1>Month</h1>
</div>

最佳答案

我试着遵循这个模式,我相信你在 while lopp 开始时添加周 row 时错过了 addClass :

week = "week" + weekCounter;
jQuery('<div/>', {
    id: week
}).addClass('row').appendTo('.container');

function getFirstDay(theYear, theMonth) {
  var firstDate = new Date(theYear, theMonth, 1)
  return firstDate.getDay()
}

var getDaysInMonth = function (month, year) {
  return new Date(year, month, 0).getDate();
}

$(function () {
  var firstDay = getFirstDay(2018, 2);
  var howMany = getDaysInMonth(2, 2018);

  var dayCounter = 1;
  var done = false;
  var weekCounter = 0;
                
  while (!done) {
  weekCounter++;
  week = "week" + weekCounter;
  jQuery('<div/>', {
    id: week
  }).addClass('row').appendTo('.container');

  for (var i = 0; i < 7; i++) {
    if ($(week).siblings().length == 1 && i < firstDay) {
      newC.innerHTML = ""
      jQuery('<div/>', {
        id: week,
        class: 'col border',
        text: "x"
      }).appendTo('#week' + weekCounter);
      continue
    }
    if (dayCounter == howMany) {
      // no more rows after this one
      done = true
    }
                        
    if (dayCounter <= howMany) {
      dayCounter++;
      jQuery('<div/>', {
        //id: week,
        class: 'col border',
        text: dayCounter
      }).addClass('col border').appendTo('#week' + weekCounter);
    } else {

    }
  }
}
});
<!doctype html>
<html lang="en">
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

        <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>

    <title>Calendar</title>

    </head>
    <body>
        <div class="container">
            <h1>Month</h1>

            <div class="row">
                <div class="col border ">Mon</div>
                <div class="col border">Tue</div>
                <div class="col border">Wen</div>
                <div class="col border">Thu</div>
                <div class="col border">Fri</div>
                <div class="col border">Sat</div>
                <div class="col border">Sun</div>
            </div>

            <div class="row aa" style="height: 100px;">
                <div class="col border">1</div>
                <div class="col border">2</div>
                <div class="col border">3</div>
                <div class="col border">4</div>
                <div class="col border">5</div>
                <div class="col border">6</div>
                <div class="col border">7</div>
            </div>
        </div>

    </body>
</html>

关于jquery - 如何在新的动态元素上应用 bootstrap css?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49503821/

相关文章:

javascript - datetimepicker - 将日期值传递给 Angular Controller

javascript - <select> 中 HTML <option> 中的样式子字符串

html - IE6 中的下拉菜单 "blinking"

html - 覆盖 CSS 属性。 !important 不起作用

php - Codeigniter 防止重复数据

jQuery 在变量中查找元素

javascript - jQuery jEditables - 使用 optgroup 选择

jquery - 错误 : jQuery requires a window with a document

javascript - 如何将表体定位到 "fit"到表头和行头?

html - 拨动开关前元件