javascript - 使用相同的触发器取消绑定(bind)两个 jQuery 函数之一?

标签 javascript jquery ajax

我已经编写了以下 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');
});

最佳答案

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

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

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

可能很诱人,但您不想做的是求助于一个全局变量来跟踪何时加载了 load.php。

关于javascript - 使用相同的触发器取消绑定(bind)两个 jQuery 函数之一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9451827/

相关文章:

javascript - 没有 ssl 的 Web 加密 API

javascript - React Router 服务器端的错误处理

javascript - 下拉对齐问题?

javascript - 精简视频播放列表代码

javascript - 如何停止 slideUp 和 down 在事件停止时继续运行

javascript - Symfony - 如何使用 Sweet Alert 使用路由进行表单提交?

javascript - 如何在 html select 中为每个选项添加一个删除/删除按钮?

javascript - 使用ajax追加时如何循环奇数和偶数?

javascript - 在加载时隐藏图像并根据一个 url 参数值显示

javascript - 在ajax中将数组元素作为数据发送