代码之家  ›  专栏  ›  技术社区  ›  randombits

如何将jQuery.live()附加到这段代码中?

  •  0
  • randombits  · 技术社区  · 14 年前

    我正在使用一个名为cloud zoom的插件。问题是,它与任何 class="cloud-zoom" 当DOM准备好时。我的问题是我没有在渲染时将该类附加到DOM元素。它是动态附加的。因此,我需要将.live()与它混合使用,以使其工作:

    $(document).ready(function () {
        $('.cloud-zoom, .cloud-zoom-gallery').CloudZoom();
    });
    

    .live()需要事件。我不知道如何在使用类cloud zoom注入DOM的任何元素上指定一个名为invoke CloudZoom()的事件。

    3 回复  |  直到 14 年前
        1
  •  5
  •   Nick Craver    14 年前

    你不能用 .live() 在这里,它以一种完全不同的事件驱动的特定方式工作。对于动态元素上的插件,有两个选项,可以在新元素出现时重新运行此代码,例如在ajax中 success 处理程序,或使用 the .livequery() plugin ,就像这样:

    $(document).ready(function () {
        $('.cloud-zoom, .cloud-zoom-gallery').livequery(function() {
          $(this).CloudZoom();
        });
    });
    
        2
  •  0
  •   Flipke    14 年前

    我想可能是这样的:

    $(document).ready(function () {
        $('.cloud-zoom, .cloud-zoom-gallery').live(function(){
            $(this).CloudZoom();
        });    
    });
    

    好吧,不管怎样,它需要一个事件。我在考虑jQuery Livequery插件,它接受匿名函数而不使用事件

        3
  •  0
  •   denislexic    14 年前

    如果以上方法不起作用,您可以尝试:

    $(document).ready(function () {
    $('.cloud-zoom, .cloud-zoom-gallery').live(function(){
        $(this).CloudZoom();
    }).trigger('click');    
    

    });

    只需在最后添加触发器点击,对我有效。