4

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

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

    ...
});

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

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

4

2 回答 2

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') 有两个或多个元素。

于 2013-09-03T08:05:21.953 回答
0

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

$('.code').on('click', function () {
    $(this).zclip({
        path: '<%= asset_path "ZeroClipboard.swf" %>',
        copy: $(this).text()
    });
});
于 2012-08-03T00:29:04.490 回答