[英]jQuery: live('focus') and live('blur') nested in a namespace not working in 1.3.2
我有以下HTML
<input class="hasToolTip" type="text" value="meh"/>
<span class="tooltip" style="display: none;">tooltip here</span>
我希望工具提示在输入获得焦点时淡入,所以我用正确的方法创建了一个名称空间(它以下列方式包含我所有用于输入/表单的JavaScript)
var inputCommon = (function() {
return {
SetupToolTips: function() {
$(".hasToolTip").live('focus', function() {
$(this).next(".tooltip").fadeIn();
});
$(".hasToolTip").live('blur', function() {
$(this).next(".tooltip").fadeOut();
});
}
};
})();
然后在文档加载时调用它
$(function() {
inputCommon.SetupToolTips();
});
而且... 不适用于jQuery 1.3.2 。 虽然它适用于1.4.2 ,但我现在真的准备好进行库更改。
知道我如何可以吃蛋糕(命名空间!)并也可以吃蛋糕(实时工作!)?
没有人愿意自欺欺人,这是我从马口中直接跳过的明确摘录:
在jQuery 1.3.x中, 仅以下JavaScript事件 (除自定义事件外)可以与.live()绑定:click,dblclick,keydown,keypress,keyup,mousedown,mousemove,mouseout,mouseover和mouseup。
(......)
从jQuery 1.4.1开始, 甚至可以实时进行焦点和模糊处理 (映射到更合适的冒泡,事件focusin和focusout)。
如果没有一些重大更改,您将无法做到,而不是升级到1.4+可能会带来更多问题。 事件系统在1.4.2中进行了大修,从那时起进行了进一步的改进……与尝试为此版本支持1.3.x相比,将时间花费在升级到jQuery 1.4+上要好得多。
您总是可以这样操作...
var inputCommon = (function() {
return {
SetupToolTips: function() {
$(".hasToolTip").focus(function() {
$(this).next(".tooltip").fadeIn();
});
$(".hasToolTip").blur(function() {
$(this).next(".tooltip").fadeOut();
});
}
};
})();
而不是现场直播。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.