jQuery Focus / Blur用于具有相同类的每个输入 - 有问题

时间:2014-01-21 20:17:42

标签: javascript jquery html css

小提琴在这里:http://jsfiddle.net/44zAy/11/

一切都按照我想要的方式工作,但如果你在第一个输入内部点击然后在第二个输入中点击,第一个关闭,如果你点击x按钮就会关闭。

我需要的是它保持开放,即使我在另一个内部点击也只有关闭,如果我模糊了它而不是通过专注于另一个输入。那可能吗?

由于

CODE:

var inputWdith = '185px';
var inputWdithReturn = '68px';

jQuery('.resize-close').hide();

jQuery(".resize-input").on('focus', function() {
 jQuery(this).animate({
  width: inputWdith
 },400);
 jQuery(this).promise().done(function(){
  jQuery(this).next('.resize-close').show();
 });
}).bind('blur', function() {
 jQuery(this).animate({
  width: inputWdithReturn
 },500);
 jQuery(this).next('.resize-close').hide(); 
});

jQuery('.resize-close').click(function(){
  jQuery(this).prev('.resize-input').animate({
  width: inputWdithReturn
 },500);; 
});

1 个答案:

答案 0 :(得分:0)

要快速修复当前代码,请使用event.relatedTarget:http://jsfiddle.net/QKVL9/

问题是当您点击第二个输入时,第一个输入会触发'blur'事件。因此,快速解决方法是检查是否存在event.relatedTarget != null。如果存在relatedTarget,则停止执行第一次输入的'blur'事件。

但我建议使用此代码的完整重构:)