您不能将事件侦听器绑定到函数。事件是从 DOM 节点绑定和触发的,因此您需要知道如何选择灯箱的标记。jQuery 现在允许这样做,但您仍然需要一个包装器来触发事件。
我能想到的最简洁的方法是包装 Lightbox.updateNav 函数并触发自定义事件。
(function(){
var _updateNav = Lightbox.updateNav;
Lightbox.updateNav = function () {
$("#lightbox").trigger('lightbox.updateNav');
_updateNav.apply(this, arguments);
}
})();
#lightbox
需要指向可以绑定事件侦听器的灯箱标记。我对 LightBox2 的 API 不太了解,无法告诉您具体如何做到这一点。
这比简单的包装函数更好,因为您可以连接任意数量的侦听器。
$("#lightbox").bind('lightbox.updateNav', function() {})
由于灯箱标记可能是动态创建和销毁的,因此您最好使用delegate
相反(前提是您可以访问 jQuery 1.4.2)。如果您可以识别插入标记的位置,请将委托附加到父元素:
$('#lightbox-parent').delegate('#lightbox', 'lightbox.updateNav', function() {})
这比.live()
所以如果可以的话我建议你这样做。