我已经编写了以下 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/