【问题标题】: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()
});
});