微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 使用相同的触发器解除绑定两个jQuery函数之一?

我写了下面的jQuery脚本,我正试图做一个’酷转换’,哈哈.当您开始输入#post-area-input input type = text-Box时,页面应该在您键入时切换到’compose.PHP页面(表单),如果您键入超过19个字符,则文本框应该在keyup上扩展到80%宽度,如果它小于30个字符,则该框恢复为300px.

虽然,问题是,如果你模糊了#post-area-input文本框,然后再次聚焦,加载函数会重新加载,而compose.PHP文件中的其他(可能是输入的)数据将会消失.

问题是:我如何做到这一点,以防止最后一个功能一旦发生就再次发生?我看过.unbind(),但看到好像另一个函数同时在同一个ID上,这也会禁用扩展函数.

非常感谢!非常感谢任何答案:)(脚本如下)

$('#post-area-input').keyup(function(){
    if($('#post-area-input').val().length > 19){
        $('#post-area-input').animate({width: '80%',}, 80, function(){});
    }
    else {
        $('#post-area-input').animate({width: '300',}, 80, function(){});
    }
});

$('#post-area-input').blur(function(){
    if($('#post-area-input').val().length < 19){
        $('#post-area-input').animate({width: '300',}, 80, function(){});
    }
});

$('#post-area-input').keyup(function(){
    $('#pcontent').load('compose.PHP').hide().fadeIn('slow');
});

解决方法:

我建议不要将多个匿名函数绑定到事件处理程序.取消绑定它们可能会变得模棱两可.相反,声明函数并将它们绑定/解除绑定:

function keyUpFuncA(e) {
  //code
}
function keyUpFuncB(e) {
  //code
}
$(document).keyup(keyUpFuncA);
$(document).keyup(keyUpFuncB);

//then later when unbinding:
$(document).unbind("keyup", keyUpFuncA);

什么可能是诱人的,但你不想做的是,求助于一个全局变量来跟踪何时加载load.PHP.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐