jQuery focus() - 为什么要添加不可见的元素?

时间:2014-02-05 06:45:59

标签: jquery focus append

我有一个有趣的问题(至少对我而言)。

我有一个textarea,它有一个onfocus函数来扩展textarea并附加一个取消和提交按钮,这里是代码:

$('.box').focus(function() {
                $(this).attr("status", "open");
                $(this).attr("rows", 5);
                $(this).parent().append("<button type='submit'>Submit</button><span class='cancel_comment' onclick='cancel_comment();'>Cancel</span>");
                $('#comment_container').css("height", ($('#right_display').innerHeight() - $('#description_container').outerHeight() - 15));
            });

取消按钮执行以下操作(将其恢复为原始外观和格式):

function cancel_comment(){
                $(this).attr("status", "closed");
                $('.box').attr("rows", 1);
                $('.cancel_comment').remove();
                $('#description_container button').remove();

            }

这两个函数在第一次“点击”或焦点时都能完美运行,但我注意到两件事:

  1. 点击取消并运行cancel_comment()函数后,当我“再次点击”或再次关注textarea时,它会展开,告诉我第一个代码正在实现,但是...

  2. 它将取消和提交按钮boxas不可见(无量纲)元素添加到html(因此,如果我点击5次,我在html中有1个可见的按钮组和4个不可见的按钮组。)

  3. 知道为什么会这样吗?


    感谢您的评论!

    这是一个不会复制问题的jsfiddle,它实际上是完美的:http://jsfiddle.net/livvyjeffs/8HZLX/7/

    我已经玩弄了jquery脚本代码的位置,现在我只是把它放在身体的末尾。 我将它保存在html文档中是为了方便,因为我真的不知道如何创建一个jQuery文档 - 这可能导致它吗?我知道jQuery对于订购很有帮助。

    还有什么可能导致这种情况吗?我正在考虑并查看我的代码,将更新更新!

0 个答案:

没有答案