javascript - 如何影响多个动态元素中的一个元素

标签 javascript jquery html jquery-ui-sortable

http://jsfiddle.net/SergeyKozlov/tewyg2js/3/

我使用按钮事件动态插入 HTML 代码:

$("#NewItemImg").click(function(e) {
    e.preventDefault();
    itemCount++;

    var element = $("\
                    <div class=\"portlet ui-widget ui-widget-content ui-helper-clearfix ui-corner-all\">\
                        <div class=\"portlet-header ui-widget-header ui-corner-all\">img " + itemCount + "\
                            <span class='ui-icon ui-icon-closethick portlet-close'></span>\
                        </div>\
                        <div class=\"portlet-content\">\
                            <div class=\"form-group\">\
                                <input type=\"text\" class=\"form-control\" name=\"article[body][][img]\" id=\"ImageURL\" placeholder=\"Image URL\">\
                            </div>\
                            <button id=\"SetImageURL\" type=\"button\" class=\"btn btn-default\">Submit</button>\
                            <img id=\"PanelNewImageURL\" src=\"http://imgde.me/508f93cfb59b5.jpg\" alt=\"2014-12-10T18:04:41.762Z\" title=\"2014-12-10T18:04:41.762Z\" onerror=\"imgError(this);\">\
                        </div>\
                    </div>\
    ");

然后我尝试使用以下代码删除新的动态元素:

$("body").on('click', '.column  .portlet-close', function () {
    $(this).closest( ".portlet" ).remove();
});

在这种情况下它有效。问题是如何影响多个动态元素中的一个元素。

$("body").on('click', '.column #SetImageURL', function () {
    //e.preventDefault();
    // itemCount++;
    $("#PanelNewImageURL").show();
    $("#ImageURL").hide();
});

当我使用此代码时,当您获取任何按钮时,并且仅对第一个按钮起作用。

最佳答案

您看到此行为是因为 id 属性必须是唯一的,但您正在使用“SetImageURL”的多个实例作为 ID。当 jQuery 选择器中包含 id 引用时(如此处所示:on('click', '.column #SetImageURL' . . .)),它仅作用于具有该 id 的第一个匹配元素,并忽略任何其他拥有它的元素。

因此,您需要找出一种方法使其与纯类选择器一起使用,或者一种使 id 值唯一并在选择器中包含这些唯一 id 值的方法。我会采用第一种方法。 。 。不过,无论哪种情况,您都应该让您的 id 值具有唯一性。 :)

编辑:

再次查看您的代码,尝试以下操作:

$("body").on('click', '.column .btn-default', function () {
    //e.preventDefault();
    // itemCount++;
    $(this).siblings("img").show();
    $(this).parent().find(".form-control").hide();
});

关于javascript - 如何影响多个动态元素中的一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28441672/

相关文章:

html - 相对于行垂直对齐 Div 中的文本

javascript - 错误 TS2307 : Cannot find module (external, 私有(private)模块)

javascript - 检查字符输入时正则表达式的小问题

javascript - 访问 id 中的标题

javascript - 如何通过保留 URL 参数执行 Javascript 重定向 url

html - CSS 在每第 n 个 child 后清除

javascript - 从 mathjax 纸质输入 polymer 对象中提取输入值

jquery - 将 DataTable 与 colspan 一起使用时,无法读取未定义的属性 'mData'

javascript - Jquery - 如何从中选择下一个元素?

javascript - 如何使图表水平滚动(使用 Chart.js 时)