【问题标题】:ZeroClipboard / zClip -- how to bind to live events?ZeroClipboard / zClip -- 如何绑定到实时事件?
【发布时间】:2011-12-09 15:31:13
【问题描述】:

我正在尝试将 zclip 与 live 绑定:

$('.code').live('click', function () {
    $(this).zclip({
        path: '<%= asset_path "ZeroClipboard.swf" %>',
        copy: $(this).text()
    });

    ...
});

它似乎不是那样工作的。 有什么线索吗?

我需要做直播,因为一些 DOM 元素是用 ajax 添加的。

【问题讨论】:

    标签: javascript jquery zeroclipboard zclip


    【解决方案1】:

    你可以把zclip-binding放到你的ajax方法的回调函数中,像这样:

    $.post('ajax',
       {data:"data"}, 
           function(data){
          //add dom elements
          ....
              //bind zclip
              $('.code').each(function(){
        $(this).zclip({
          path:".ZeroClipboard.swf",
          copy:$(this).txt()
            });
          });
       }, 'json');
    

    each() 是为了避免 $('.code') 有两个或多个元素。

    【讨论】:

      【解决方案2】:

      检查您正在使用的 jQuery 版本。 无论如何,您应该使用 .delegate() 或 .on()(如果 jQuery >= 1.7)。 (jQuery 弃用了 .live 方法) 它们应该可以通过 ajax 处理您新添加的元素。

      $('.code').on('click', function () {
          $(this).zclip({
              path: '<%= asset_path "ZeroClipboard.swf" %>',
              copy: $(this).text()
          });
      });
      

      【讨论】:

        猜你喜欢
        • 2015-06-18
        • 2011-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-19
        • 2015-10-29
        • 1970-01-01
        相关资源
        最近更新 更多