更改事件未触发

发布于 2024-11-03 20:25:54 字数 695 浏览 2 评论 0原文

我已经克隆了一个表(带有选择)以复制到其他地方。这非常有效,我可以毫无后顾之忧地更改 ID。问题是,如果我尝试将更改事件绑定到每个事件,它永远不会触发吗?这里有明显的错误吗?谢谢。

<script type="text/javascript">
            $(document).ready(function () {
                var variants = $("table.variantselection").clone(false);

                variants.find("select").each(function (i, o) {
                    $(this).attr("id", $(this).attr("id") + "_popup");
                });

                variants.find("select").change(function () {
                    alert($(this).val()); // never reaches this alert
                });

                variants.appendTo("#popup_variants");               
            });
        </script>

I have cloned a table (with selects) to copy to somewhere else. This works great and I manage to change the ID's with no worries. The problem is that if I try to bind a change event to each of them, will it never fire? Is there a obvious mistake here? Thank you.

<script type="text/javascript">
            $(document).ready(function () {
                var variants = $("table.variantselection").clone(false);

                variants.find("select").each(function (i, o) {
                    $(this).attr("id", $(this).attr("id") + "_popup");
                });

                variants.find("select").change(function () {
                    alert($(this).val()); // never reaches this alert
                });

                variants.appendTo("#popup_variants");               
            });
        </script>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

转身以后 2024-11-10 20:25:54

将 false 更改为 true 以复制具有 DOM 元素的事件处理程序

var variants = $("table.variantselection").clone(true);

如果失败,请使用 live() 事件进行绑定:

variants.find("select").live("change", function () {
    alert($(this).val());
});

Change false to true to copy the event handlers with the DOM element

var variants = $("table.variantselection").clone(true);

Failing that, use the live() event to bind:

variants.find("select").live("change", function () {
    alert($(this).val());
});
醉城メ夜风 2024-11-10 20:25:54

将克隆重新附加到 DOM 后,尝试绑定 .change() 函数。

Try binding the .change() function after you've reattached the clone to the DOM.

说谎友 2024-11-10 20:25:54

由于 #popup_variants 似乎是表格上的父元素,因此您最好使用 .delegate()

$(document).ready(function() {

$("#popup_variants").delegate("select", "change", function(){
  alert($(this).val());
});

var variants = $("table.variantselection").clone(false);

variants.find("select").each(function(i, o) {
    $(this).attr("id", $(this).attr("id") + "_popup");
});

variants.appendTo("#popup_variants");

});

Since it appears that #popup_variants is the parent element on your table, you might be better off to use .delegate()

$(document).ready(function() {

$("#popup_variants").delegate("select", "change", function(){
  alert($(this).val());
});

var variants = $("table.variantselection").clone(false);

variants.find("select").each(function(i, o) {
    $(this).attr("id", $(this).attr("id") + "_popup");
});

variants.appendTo("#popup_variants");

});

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文