如何将我的jQuery插件应用于动态创建的元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将我的jQuery插件应用于动态创建的元素相关的知识,希望对你有一定的参考价值。

我正在构建一个动态生成部分元素的应用程序,其样式为便利贴。我正在配置此应用程序采取jQuery插件的形式。生成部分的功能很好,但我无法在部分上呈现我的默认插件样式选项。基本上,我的插件似乎不适用于我动态创建的元素。有关如何解决此问题的任何建议?见下面的代码。谢谢!

index.html

    <div id="mylist"></div>

    <input type="button" id="NewElement" value="New Element">

    <script src="script.js"></script>

    <script>
      $("section").newNote();
    </script>
script.js

(function ( $ ) {
$.fn.newNote = function(options) {

    $('#NewElement').on('click',function(){
        $('#mylist').append("<section></section><br />");
    });

        var settings = $.extend({
            radius: 3,
            border: 0,
            background: "linear-gradient(#f9efaf, #f7e98d)",
            resize: "none",
            width: "20%",
            padding: 20,
            overflow: "hidden",
            height: 200,
            margin: "1%",
            float: "left"
        }, options );

        return this.css({
            radius: settings.radius,
            background: settings.background,
            resize: settings.resize,
            width: settings.width,
            padding: settings.padding,
            overflow: settings.overflow,
            height: settings.height,
            margin: settings.margin,
            float: settings.float
        });
};
}( jQuery ));

答案

更新您的方法,如下面的代码段所示

(function ( $ ) {

 $(document).on('click', '#NewElement', function () {
        $('#mylist').append("<section></section><br />");
        $('section').newNote();
 });

$.fn.newNote = function(options) {
        var settings = $.extend({
            radius: 3,
            border: 0,
            background: "linear-gradient(#f9efaf, #f7e98d)",
            resize: "none",
            width: "20%",
            padding: 20,
            overflow: "hidden",
            height: 200,
            margin: "1%",
            float: "left"
        }, options );

        return this.css({
            radius: settings.radius,
            background: settings.background,
            resize: settings.resize,
            width: settings.width,
            padding: settings.padding,
            overflow: settings.overflow,
            height: settings.height,
            margin: settings.margin,
            float: settings.float
        });
};
}( jQuery ));
<div id="mylist"></div>
<input type="button" id="NewElement" value="New Element">
<script src="script.js"></script>

以上是关于如何将我的jQuery插件应用于动态创建的元素的主要内容,如果未能解决你的问题,请参考以下文章

Angular2动态组件和TP jQuery库

将 jQuery DataTable 插件应用于从 ASP.NET 动态生成的表

动态jquery。如何仅将 jquery 应用于某些元素?

如何在对象 jQuery 中应用样式动态创建的 DOM

检测jQuery插件是不是应用于多个元素?

有没有办法通过 jquery 选择的插件动态 ajax 添加元素?