jQuery:live('focus')和live('blur')嵌套在1.3.2中不起作用的命名空间中

时间:2010-12-09 13:56:29

标签: javascript jquery live

我有以下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.2It 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开始甚至关注和模糊使用实时(映射   更合适,冒泡,   事件焦点和焦点)。

2 个答案:

答案 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();
            });
        }
    };

})();

而不是使用直播。