与 jQuery 1.9 的冲突与.after() 方法的新行为有关。您可以重写Lightbox.prototype.build
Lightbox 中的方法以避免在断开连接的节点上使用 .after() 方法,Lightbox 将再次与 jQuery 1.9 一起使用。
下面是我快速破解的解决方案(有效)。它可以通过更多的链接来清理,但我决定把它留到以后,或者可能只是等待 Lightbox v2.51 被更新以包含一个标准化的修复。
Lightbox.prototype.build = function() {
var $lightbox,
_this = this;
// Editing here for jQuery 1.9 conflict
$("<div>", { "id": "lightboxOverlay" }).appendTo("body");
lightbox = $("<div>", { "id": "lightbox" });
outerContainer = $("<div>", { "class": "lb-outerContainer" });
container = $("<div>", { "class": "lb-container" });
$(container).append($("<img>", { "class": "lb-image" }));
nav = $("<div>", { "class": "lb-nav" });
$(nav).append($("<a>", { "class": "lb-prev" }));
$(nav).append($("<a>", { "class": "lb-next" }));
loader = $("<div>", { "class": "lb-loader" });
$(loader).append($("<a>", { "class": "lb-cancel" }).append($("<img>", { "src": this.options.fileLoadingImage })));
$(container).append(nav);
$(container).append(loader);
$(outerContainer).append(container);
dataContainer = $("<div>", { "class": "lb-dataContainer" });
data = $("<div>", { "class": "lb-data" });
details = $("<div>", { "class": "lb-details" });
$(details).append($("<span>", { "class": "lb-caption" }));
$(details).append($("<span>", { "class": "lb-number" }));
closeContainer = $("<div>", { "class": "lb-closeContainer" });
$(closeContainer).append($("<a>", { "class": "lb-close" }).append($("<img>", { "src": this.options.fileCloseImage })));
$(data).append(details);
$(data).append(closeContainer);
$(dataContainer).append(data);
$(lightbox).append(outerContainer);
$(lightbox).append(dataContainer);
$(lightbox).appendTo("body");
// End custom changes
$('#lightboxOverlay').hide().on('click', function(e) {
_this.end();
return false;
});
$lightbox = $('#lightbox');
$lightbox.hide().on('click', function(e) {
if ($(e.target).attr('id') === 'lightbox') _this.end();
return false;
});
$lightbox.find('.lb-outerContainer').on('click', function(e) {
if ($(e.target).attr('id') === 'lightbox') _this.end();
return false;
});
$lightbox.find('.lb-prev').on('click', function(e) {
_this.changeImage(_this.currentImageIndex - 1);
return false;
});
$lightbox.find('.lb-next').on('click', function(e) {
_this.changeImage(_this.currentImageIndex + 1);
return false;
});
$lightbox.find('.lb-loader, .lb-close').on('click', function(e) {
_this.end();
return false;
});
};