繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM