【问题标题】:JQuery: Remove element added dynamicallyJQuery:删除动态添加的元素
【发布时间】:2013-11-23 23:53:08
【问题描述】:

我有一个弹出窗口,允许我选择图像并将图像名称作为列表中的行元素返回到父窗口。我想在行尾添加一个删除链接,以便单独删除该行。

主页:

    <script>
    $(document).ready(function(){
        $('.ImageManager').click(function (event) {
            event.preventDefault();
            var w = window.open("/image-manager", "popupWindow", "width=600, height=400, scrollbars=yes");
        });
    });
    $(document).ready(function(){
        $(".remove").on("click", function(){
            $(this).parent().remove();
        });
    });
    </script>

<ul id="imagelist">
</ul>
<a href="" class="ImageManager">Add Image</a>

图像管理器弹出窗口:

<script>
    $(document).ready(function(){
        $(".addimage").click(function() {
            var imgname = $('img', this).attr("alt");
            $("#imagelist", window.opener.document).append('<li>' + imgname + '<a class="remove">Remove</a></li>');
        });
    });
</script>

在弹出窗口中,图像名称存储在替代文本中。当我在主页单击删除时,没有任何反应。浏览了其他标题相同的 SO 帖子,但找不到类似的解决方案。

【问题讨论】:

    标签: jquery dynamic element


    【解决方案1】:

    这将是在 DOM 准备好后添加的元素,因此它是动态的,您需要一个委托事件处理程序:

    $(document).ready(function(){
        $('.ImageManager').click(function (event) {
            event.preventDefault();
            var w = window.open("/image-manager", "popupWindow", "width=600, height=400, scrollbars=yes");
        });
    
        $("#imagelist").on("click", ".remove", function(){
            $(this).parent().remove();
        });
    });
    

    【讨论】:

    • 使用它会删除列表中的所有行,而不仅仅是找到删除链接的行。我的代码中可能仍然有错误,但我看不到它。
    • 检查您的 HTML,它以单击的锚点的父元素为目标,并将其删除。如果它删除了所有行,那么您的标记中有错误,使父元素包含所有行?
    • 检查了我的 HTML,li 标签肯定是锚的父级。我假设只删除了一组 li 标签(打开和关闭)而不是每组?
    • 我尝试使用 $(this).closest('li').remove();而不是上面代码中使用的 parent 选项。整个列表仍然清晰。我仔细检查了 HTML 并尝试使用 Firebug,但看不到整个列表清除的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 2019-12-29
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多