【问题标题】:JQuery live or something similar with .change()?JQuery live 或与 .change() 类似的东西?
【发布时间】:2009-08-27 22:01:33
【问题描述】:

我想这样做:http://docs.jquery.com/Events/live#typefn

只有 .live() 不支持更改事件 - 有什么想法可以解决吗?

需要将函数绑定到一些动态 DOM 元素,但要等到更改。

【问题讨论】:

    标签: jquery events dom on-the-fly


    【解决方案1】:

    注意:jQuery 1.4 现在支持所有正常事件的实时功能。直到最近它才与 IE8 一起工作,但我相信 jQuery 1.4.2 已经解决了这个问题。请参阅此已解决的 jQuery 票证:IE8 DOES NOT SUPPORT THE CHANGE EVENT WHILE USING LIVE

    【讨论】:

      【解决方案2】:

      LiveQuery plugin 支持所有事件。

      【讨论】:

        【解决方案3】:

        哦,这还不错,我只是将它包装在一个实时点击事件中,它工作得很好。

        
        $("#foo").live("click", function(){
          $('.fu').change(function(){
            blah blah blah
          });
        });
        

        【讨论】:

        • 您可能会发现这具有多次绑定和重新绑定更改函数的(不需要的)效果...
        • hm- 我没想到,但你显然是对的。由于我不需要该函数再次为单击/更改的元素工作,一个可接受的解决方案是在我的更改函数结束时使用 $(this).removeClass("fu") 吗?
        • 呃,这个答案显然是否定的……嗯,看来这里肯定有一个不需要插件的创造性解决方案,我会继续考虑的。跨度>
        【解决方案4】:

        好的,在我第一次尝试回答我自己的问题时,在 Funka 的 cmets 之后,我现在有了这个:

        
        $('.foo').change(function test(){
          $(fu).prependTo("#some-div").bind("change", test)
          $(this).unbind("change",test)
        };
        

        这将在创建时将函数绑定到每个元素,并将其与之前创建的元素解除绑定。这解决了我在 UI 方面的问题,但我是新手,所以如果我再次错过某些东西,我真的很愿意学习! ;)

        【讨论】:

          【解决方案5】:

          在 jQuery 1.3 中没有 .live() 之前,我使用 Arial Flesler 的“监听”插件取得了巨大的成功。

          http://flesler.blogspot.com/search/label/jQuery.Listen

          我相信您应该能够使用此插件在更改事件上执行此操作。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-03-18
            • 1970-01-01
            • 2014-02-15
            • 1970-01-01
            • 1970-01-01
            • 2014-08-30
            • 2010-10-26
            • 1970-01-01
            相关资源
            最近更新 更多