如果我做对了,您是否希望页面上具有“固定”类的任何内容都可以调整大小,即使该类是在页面加载后添加的?你说得对,live、bind 和 delegate 在这里无济于事。
我能想到两种可能,都不可爱。
首先,设置一个实时的“mouseenter”事件,如果之前没有,它将使元素可调整大小:
$(body).delegate(".fixed", "mouseenter", function(ev) {
var target = $(ev.target);
if (target.data("resizable")) return;
target.resizable({
aspectRatio: true,
handles: 'all'
});
})
这让我们解决了没有事件可以绑定的问题。
或者,您可以猴子补丁 jQuery.fn.addClass:
var classRe = new RegExp(c + className + \b);
._addClass = jQuery.fn.addClass;
jQuery.fn.addClass = function(className) {
if (classRe.test(classname)) {
if (this.data("resizable")) return;
this.resizable({
aspectRatio: true,
handles: 'all'
});
}
jQuery.fn._addClass.apply(this, arguments);
}
当然,这只有在通过 addClass 方法添加类时才有效。
同样在你的例子中,
$('lyr').addClass('fixed');
应该是:
$('.lyr').addClass('fixed');