材质设计波浪效果不适用于动态创建的按钮

时间:2019-03-27 12:19:58

标签: jquery twitter-bootstrap bootstrap-material-design

我正在尝试使用jQuery的append方法来创建按钮。但是,如果我单击它们,则由jQuery创建的按钮没有波动效果。我在HTML中创建的按钮具有波浪效果。

为什么不同?我怎样才能使jQuery创建的按钮也出现波浪效果?

感谢您的帮助!

$('#line').append('<button type="button" class="btn btn-lg btn-primary">Button created by js</button>');
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/mdbootstrap/4.7.5/css/mdb.min.css" rel="stylesheet"/>

<button id="btn1" type="button" class="btn btn-lg btn-primary">
  Button
</button>

<hr id="line">

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mdbootstrap/4.7.5/js/mdb.min.js"></script>

1 个答案:

答案 0 :(得分:3)

MDBootstrap库中的Waves效果不会自动应用于动态创建的元素。您需要在新按钮上手动实例化它。根据{{​​3}},您可以通过致电Waves.attach('.btn', ['waves-light']);来实现。

还要注意,正如评论中的@VVV所述,<hr>主要用于定义HTML页面中的主题中断,使用after()代替append()会更好,因为该代码将无法通过W3C进行验证。

$('#line').after('<button type="button" class="btn btn-lg btn-primary">Button created by js</button>');

Waves.attach('.btn', ['waves-light'])
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/mdbootstrap/4.7.5/css/mdb.min.css" rel="stylesheet"/>

<button id="btn1" type="button" class="btn btn-lg btn-primary">
  Button
</button>

<hr id="line">

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mdbootstrap/4.7.5/js/mdb.min.js"></script>