jQuery- focusout仅在未单击其他元素时

chr*_*o16 4 javascript jquery javascript-events

当用户专注于某个元素时,我会显示一个保存按钮.在焦点上,我删除了保存按钮.

替代文字

用户可以通过点击返回或单击保存来提交输入.单击保存按钮时,输入失去焦点并删除保存按钮,因此不会记录单击.如果点击了保存按钮,我可以在焦点中告诉我吗?

在我的焦点函数中,我做了这样的事情:

        $('#save_button').click(function(){
            saveEditingField(this); //save input
            $('#save_button').die("click");
        });

        $('.editing').focusout( function(e) {
            $('#isediting').attr('value','false');
            $('#edit_controls').remove()
        });
Run Code Online (Sandbox Code Playgroud)

我已经尝试在remove()中添加延迟,但是当在输入之间进行选项卡时,它会显示多个保存按钮(而其他按钮被删除).

有任何想法吗?

Dr.*_*lle 6

我认为你只需要在聚焦和删除/隐藏按钮之间稍微超时.


Sha*_*hin 6

在隐藏按钮之前,您可以检查鼠标是否在焦点上的按钮上方.

这里的概念证明:http://jsfiddle.net/dnsEM/

此实现的一个小问题是,如果输入框在鼠标悬停在按钮上时失去焦点并且仅在鼠标移出时隐藏,则保存按钮不会消失.