jquery 显示和隐藏功能不起作用

标签 jquery

我有一组记录,旁边有一个“编辑”按钮。 我还有一个 div,里面有一个表单。

当我单击“编辑”时,我会显示 div。在 div 内部,我有一个“关闭”按钮,它只需通过 jquery.hide() 关闭 div。当我单击另一条记录的“编辑”按钮时,div 根本不会显示。

我使用其他显示并隐藏在我的代码中的其他元素,它们工作得很好。只有这个我无法工作。

在我的例子中,show() 和 hide() 方法有具体的用法吗?

$('.edit').live('click', function () {
    var theid = $(this).attr('id');
    $('#' + theid).empty().append($('.rec_edit').show());

    if ($('#txt_nowediting_id').val() > 0) {
        load_single_rec($('#txt_nowediting_id').val());
    };

    $('#txt_nowediting_id').val(theid);
    return false;
});

$('#btnCancelEdit').click(function () {
    $('.rec_edit').hide();
    load_single_rec($('#txt_nowediting_id').val());
    return false;
});

这里 .rec_edit 是隐藏和显示的 div...

最佳答案

简短回答:在您的#btnCancelEdit点击处理程序中,更改此:

$('.rec_edit').hide();

对此:

$('.rec_edit').hide().appendTo('body');

(或者它最初位于标记中的任何位置,如果不是 body 的话。)否则,我认为您在设置编辑器时对 empty() 的调用会将其清除。

这是一个适合我的完整示例(调整代码以解决不完整的代码,例如 load_single_rec):

<html>
    <head>

        <script type='text/javascript' src='js/jquery-1.3.2.js'></script>

        <script type='text/javascript'>
            var editor;

            $(document).ready(function() {

                $('.edit').live('click', function() {
                    var theid = $(this).attr('id');

                    $('#' + theid).empty().append($('.rec_edit').show());
    /*
                    if ($('#txt_nowediting_id').val() > 0) {
                        load_single_rec($('#txt_nowediting_id').val());
                    };
    */
                    $('#txt_nowediting_id').val(theid);

                    return false;
                });


                $('#btnCancelEdit').click(function() {
                    $('.rec_edit').hide().appendTo('body');

                    // load_single_rec($('#txt_nowediting_id').val());
                    $('#' + $('#txt_nowediting_id').val()).text('edited!');
                    return false;
                });
            });
        </script>

    </head>
    <body>
        <form>

            <div id='div1' class='edit' style='border: 2px solid #00f;' >
                Edit me
            </div>

            <div id='div2' class='edit' style='border: 2px solid #00f;' >
                Edit me too
            </div>

            <div class='rec_edit' style='display:none; border: 2px solid #f00;'>
                Editor
                <input type='button' id='btnCancelEdit' value='Cancel' />
            </div>

            <input type='hidden' id='txt_nowediting_id' />


        </form>
    </body>
</html>

关于jquery 显示和隐藏功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1152754/

相关文章:

javascript - 在 Bootstrap 中单击时更改按钮的颜色

javascript - 如何在 html 表格中显示 php 响应的数据

jquery .offset().top 没有预期的行为

javascript - 在弹出窗口或模态框中嵌入代码

javascript - 显示一个 asp :ModalPopupExtender using jQuery

javascript - 如何在第一次点击后禁用触发点击

jquery - Google Buzz API通过JQuery返回Null吗?

javascript - 如何在 jqGrid 中仅显示水平网格线?

javascript - 从 JsonResult 返回字符串数组并在 JavaScript 中使用它

javascript - jQuery 转义 &lt;style&gt; 内容