jquery - 添加和删​​除类使 div 显示和隐藏

标签 jquery css forms show-hide

我正在使用 jQuery 通过添加/删除一个类来显示和隐藏一个 div。

$('input').focus(function(){
    $(this).parents('.row').addClass("linksdiv");
}).blur(function(){
    $(this).parents('.row').removeClass("linksdiv");
});

它在专注于输入时效果很好,但如果我单击 linksdiv 中的链接,它就会失去焦点并且 div 会消失。对 linksdiv 使用 show() 和 hide() 会比依赖 css 更好吗?

当输入聚焦时,是否允许点击 div?或者是否有一个简单的解决方法来防止 linksdiv 在单击时失去焦点但仍然让它在模糊时消失?

再次感谢!你们太棒了!

很抱歉,我无法很好地描述我正在尝试做的事情,是吗 http://jsfiddle.net/Zw5c2/5/感谢 Patrick 提供资源!

最佳答案

@Nick 是对的,不会有干净的解决方案。

一种可能性是延迟模糊中的代码,以便链接的点击处理程序有机会将焦点发送回输入。

http://jsfiddle.net/Zw5c2/

var lastInput;
var timeout;
$('input').focus(function() {
    var $th = $(this);
    lastInput = $th;
    clearTimeout(timeout);
    $th.parents('.row').addClass("linksdiv");
}).blur(function() {
    var $th = $(this);
    timeout = setTimeout(function() {
        lastInput = null;
        $th.parents('.row').removeClass("linksdiv");
    }, 150);
});

$('.link').click(function() {
    lastInput.focus();
    // run your code for the link
});

另一个解决方案可能是使链接实际上是一个输入。只需设置样式使其看起来像一个链接,并防止对文本进行任何更改。

http://jsfiddle.net/Zw5c2/1/

这两种解决方案都不是完美的。

改变实现可能会更好。

关于jquery - 添加和删​​除类使 div 显示和隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3125713/

相关文章:

javascript - 在其中单击时不要隐藏下拉列表

html - Css 全局计数器

javascript - 如何在轮播的第一张和最后一张幻灯片之间添加平滑过渡?

html - float 图像溢出父 div

java - 将表单参数从 JSP 发送到 Struts 操作类

javascript - 如何排除提交的 HTML 表单单选按钮值?

javascript - Jquery 适用于一个按钮,但不适用于另一个相同的按钮?

javascript - CKEditor - insertText 在 setData 后不工作

jquery - 使用 Bootstrap 面板类的正确方法?

javascript - 带括号的输入的 AngularJS 验证错误