javascript - 如何从创建自.Append 函数的动态元素中使用 JQuery 选择器?

标签 javascript jquery html

我用这个循环创建了几个包含元素的 div。我希望能够将点击事件附加到具有“linky”类的每个链接,并且此链接将读取 contentID 属性。

我一直在寻找,找到在动态创建的元素中使用选择器的案例,但不适用于我的案例。有什么建议吗?

                    for (i = 0; i < msg.length; i++) {
                        var htmlCode = "<a href='/Controller/Details/" + msg[i].ID + "' style = 'float: left;'><img class='packageImage' border='0' src='" + msg[i].Size0Path + "' /></a>";
                        htmlCode += "<span style='float: left;margin: 5px 0px 0px 10px;'>" + "<b>" + msg[i].TheName + "</b><br>";


                        if (msg[i].IsPaused == true) {

                            htmlCode += "<a href='#bar' class=linky contentID='" + msg[i].ID + "'>Resume</a>";
                        } else {

                            htmlCode += "<a href='#bar' class=linky contentID='" + msg[i].ID + "'>Pause</a>";
                        }
                        htmlCode += "</span>";
                        htmlCode += "<div class='clear'></div>";
                        $("#divContent").append(htmlCode);
                    }

鉴于答案,我正在尝试将事件附加到 linky 类,但我只是不确定在哪里,请参阅下面的更多详细信息,我的说明是根据 ajax 提交(发布)的结果创建动态元素。

                    success: function (msg) {

                        $("body").on("click", "a.linky", function () {
                            alert($(this).attr("contentID"));
                        });



 for (i = 0; i < msg.length; i++) {
                            var htmlCode = "<a href='/Controller/Details/" + msg[i].ID + "' style = 'float: left;'><img class='packageImage' border='0' src='" + msg[i].Size0Path + "' /></a>";
                            htmlCode += "<span style='float: left;margin: 5px 0px 0px 10px;'>" + "<b>" + msg[i].TheName + "</b><br>";


                            if (msg[i].IsPaused == true) {

                                htmlCode += "<a href='#bar' class=linky contentID='" + msg[i].ID + "'>Resume</a>";
                            } else {

                                htmlCode += "<a href='#bar' class=linky contentID='" + msg[i].ID + "'>Pause</a>";
                            }
                            htmlCode += "</span>";
                            htmlCode += "<div class='clear'></div>";
                            $("#divContent").append(htmlCode);
                        }


 }

最佳答案

使用 on 的委托(delegate)形式:

$("body").on("click", "a.linky", function() {
    alert($(this).attr("contentID"));
});

在创建任何动态内容之前,您只需执行一次。它会将事件处理程序附加到 <body>将响应其满足 a.linky 的任何后代选择器被点击。这些元素在您附加处理程序时是否已经在 DOM 中,或者它们是否稍后添加都没有关系。

关于javascript - 如何从创建自.Append 函数的动态元素中使用 JQuery 选择器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12657395/

相关文章:

javascript - 如何将 CSS 属性设置为 if 语句中的条件?

javascript - 在本地机器上运行 codepen 元素的问题

javascript - 如何从多个数组创建对象的数组

javascript - JSON 返回未定义

javascript - jquery 效果在 Internet Explorer 上不起作用

html - 在 CSS 中为背景图像添加边距

javascript - 如何使用 .mocharc 配置文件指定测试文件

javascript - jQuery UI(在屏幕上可见时运行)

html - 在 div 中显示 Adob​​e pdf

html - 使用 css 自定义 bootstrap nav