我有以下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();
});
而且...... it doesn't work with jQuery 1.3.2。 It works with 1.4.2虽然,但我现在已经准备好推动图书馆改变了。
任何想法我怎么能拥有我的蛋糕(命名空间!)并且也吃它(现场工作!)?
没有人能够抵制自己的傻瓜,这里是我跳过的明确摘录,straight from the horse's mouth:
在jQuery 1.3.x中仅限以下JavaScript事件(in 除了自定义事件)可能是 绑定.live():click,dblclick, keydown,keypress,keyup,mousedown, mousemove,mouseout,mouseover,和 鼠标松开。
(...)
从jQuery 1.4.1开始甚至关注和模糊使用实时(映射 更合适,冒泡, 事件焦点和焦点)。
答案 0 :(得分:4)
你不能真的,不是没有一些严重的更改可能会引入比升级到1.4+更多的问题。事件系统在1.4.2中进行了大规模的改革,并且从那时起进一步改进......你在升级到jQuery 1.4+上花费的时间要好得多,而不是尝试将支持工作转换为1.3.x.
答案 1 :(得分:1)
你可以这样做......
var inputCommon = (function() {
return {
SetupToolTips: function() {
$(".hasToolTip").focus(function() {
$(this).next(".tooltip").fadeIn();
});
$(".hasToolTip").blur(function() {
$(this).next(".tooltip").fadeOut();
});
}
};
})();
而不是使用直播。