我是 jQuery 初学者,我想创建一个颜色选择器插件。
我所做的一切工作正常,但有一个问题。
对于我网页中的所有静态内容,插件可以正常工作
$(document).ready(function() {
$('.col').colorPicker();
});
但是如果也有新的通过 jQuery 生成的“.col”对象,我必须再次运行“$('.col').colorPicker()”,在这些项目上绑定一个 ColorPicker 对象。
是否有可能在不运行“$.colorPicker()”命令的情况下使用插件本身即时执行此操作?
前段时间我记得我用“this ['live']('click',fn)”做了这个,但这不再起作用了..
编辑:
我现在没有插件的代码,但我可以给你另一个例子,我的插件的基本结构..
(function ($) {
function valueReplacer(element) {
this.element = element;
}
valueReplacer.prototype = {
// set a new value
setValue : function() {
this.element.val('new value');
}
}
// call method of colorPicker instance
function setValue() {
$.data(this, "colorPicker").setValue();
}
$.fn.valueReplacer = function() {
return this.each(function() {
// prevent multiple instances
if(!$.data(this, "valueReplacer")) {
$.data(this, "valueReplacer", new valueReplacer($(this)));
}
});
}
})(jQuery);
.. 这个示例插件现在应该做的所有事情,就是在点击它时将输入 ( $(input).valueReplacer()
) 的值设置为“新值”。
但是我应该在哪里以及如何设置.on
, 以便在setValue()
单击使用 valueReplacer 对象实例化的元素时调用该方法?