尝试在jQuery show()周围事件之前和之后触发

mkm*_*ray 9 jquery events

我试图在一些第三方代码出现模式对话框后获得一段JavaScript运行.我看到了一个非常巧妙的劫持jQuery show函数的想法,但不幸的是它没有用.我猜这个想法曾经在2009年用于旧版本的jQuery,但现在还没有在最新版本上使用.这是一个jsFiddle的实现和示例:

http://jsfiddle.net/mkmurray/drv5w/2/

正如您通过运行示例所看到的,它将警告'beforeShow'事件,但不会警告'afterShow事件',并且通过一些调试我可以看到它没有完全调用'newCallback'函数.

提前感谢您提供的任何帮助.

mkm*_*ray 9

看起来我能够通过解决方案.它涉及原因的一些因素:

  1. 自从我看到的代码的原始编写以来,jQuery添加了另一个名为的可选参数easing.这真的搞砸了我如何show通过调用委托给jQuery中的原始方法_oldShow.apply(...).
  2. 在我修复之后,我发现有时候该show方法会调用一些其他方法,有时会show再次递归调用.我需要一种不让我的实现拦截那些递归调用的方法; 我发现如果有selector房产,我可以依赖.

这个jsFiddle可以找到一个有效的实现:

http://jsfiddle.net/mkmurray/drv5w/27/

这个实现很大程度上依赖于jQuery而不改变方法的方法签名show.所以你几乎要决定是否要修改你的第三方jQuery插件而不是这样做.无论哪种方式,如果你想获得最新的第三方插件或最新的jQuery,一些新的改变可能会破坏你的实现.因此,此解决方案不一定比修改第三方插件更好或更差.

  • "这条评论是被拒绝的编辑:"上面的链接中有一个错误.可以在http://jsfiddle.net/GDqNx/1/找到工作版本 (2认同)