我正在编写一个 jQuery 插件,它在 body 元素下创建一个 div 元素。我需要在那个插件实例中跟踪这个元素。
$.fn.loadOverlay = function(command) {
return this.each(function() {
var container = $(this);
if (typeof command != 'undefined' && command === 'destroy') {
// remove the referenced DOM node
return;
}
// somehow I need to keep a reference from the plugin instance to this created DOM node
var overlay = $('<div>').css({
width: container.outerWidth(true),
height: container.height() + 1,
top: container.position().top - 1,
left: container.position().left
}).addClass('overlay');
// this is now globally appended without any reference to this plugin instance
$('body').append(overlay);
});
};
用法类似于
$('#someElement').loadOverlay(); // create the overlay
// ...
$('#someElement').loadOverlay('destroy'); // destroy the overlay
起初我只是将它附加在所选元素的下方,但这会导致表格出现问题。
一种解决方案是插件本身内部的计数器,它动态地将 ID 或类添加到选定和创建的元素,但我不知道如何在 jQuery 插件中保持变量静态。
任何帮助表示赞赏!