如何为动态添加的元素初始化 JQuery 插件

How to initialize a JQuery plugin for elements added dynamically

在此 JSFiddle, I have two table.inner-table elements which were added initially in the HTML. Spectrum plugin 中,所有 input.basic 元素都可以正常工作,即单击该元素会打开颜色选择器 window。

但是这个 JSFiddle 最初在 HTML 中只有一个 table.inner-table 元素。当您单击标有“单击”的按钮时,会添加另一个 table.inner-table。问题在于这个新添加的 table 中的两个 input.basic 元素。 单击它们不会打开颜色选择器 window

我怀疑是因为颜色选择器已经初始化,所以它不适用于动态添加的元素。在JS中,插件是这样初始化的:

$(".basic").spectrum();

问题是如何让它适用于动态添加的元素?

我尝试了什么:

看到this question,在JS中添加了以下内容。没用 =(

$('body').on('focus', '.basic', function() {
    $(this).spectrum({});
});
var table = $('.outer-table > tbody > tr:last').clone();
$(table).find('.sp-replacer').remove();
$('.outer-table > tbody').append(table);
$(".basic").spectrum({});

如果你点击按钮,它会重新初始化$(".basic").spectrum({});

这是一个fiddle