Javascript jQuery中复制元素的绑定问题
这实际上是一个更大的问题,因为我知道有几种方法可以解决这个问题,但我会尝试总结一下 我尝试做的是:我正在使用这个jQuery插件通过Flash上传文件。但是,我应该将此函数绑定到的元素#fileInput是一个活动元素,它是在加载页面后生成的:$('#fileInput').uploadify()。fileInput是活动元素的原因是因为我使用FancyBox弹出一个DIV,而这个FancyBox基本上只是“克隆”了DIV的内部html 发生了什么:当我点击“浏览”上传文件时,并没有上传进度条。原因是Uploadify无法绑定到活动元素 问题: 1.我试图在uploadify代码中用live()替换bind(),但没有成功,因为bind()允许传递[data]。LiveQuery插件的语法也与bind()不同。是否有类似于bind但适用于活动元素的内容Javascript jQuery中复制元素的绑定问题,javascript,jquery,html,css,ajax-upload,Javascript,Jquery,Html,Css,Ajax Upload,这实际上是一个更大的问题,因为我知道有几种方法可以解决这个问题,但我会尝试总结一下 我尝试做的是:我正在使用这个jQuery插件通过Flash上传文件。但是,我应该将此函数绑定到的元素#fileInput是一个活动元素,它是在加载页面后生成的:$('#fileInput').uploadify()。fileInput是活动元素的原因是因为我使用FancyBox弹出一个DIV,而这个FancyBox基本上只是“克隆”了DIV的内部html 发生了什么:当我点击“浏览”上传文件时,并没有上传进度条。
多谢各位 您可以重载
live
方法,使其支持数据
作为第二个参数:
jQuery.fn.live = (function(_live){
return function( type, data, fn ) {
var _fn;
if ( jQuery.isFunction(fn) ) {
_fn = function(e) {
e.data = data;
return fn.call( this, e );
};
}
return _live.call( this, type, _fn || fn || data );
};
})(jQuery.fn.live);
用活动(…)
替换绑定(…)
的所有实例现在应该可以工作了
注意:您必须将重载方法置于所有其他方法之上 > P>您可以考虑更改FANCYBOX代码,以支持在克隆HTML之后调用回调函数。然后,将uploadify()调用放在回调函数中。根据我的经验,我发现实现这一点的唯一方法是使用livequery 它有一个类似的语法,在您的情况下,要在live元素上绑定uploadify,您可以使用
$('#fileInput').livequery(function(){
$(this).uploadify();
})
Livequery接受没有事件的函数,并在每次DOM发生更改时执行这些函数。元素是如何生成的?如果它是使用jQuery从服务器获取的,您可以使用一种更黑客的方法来修复它,只需将jQuery runs eval()放在它运行到的任何脚本标记上,这样您就可以:
<script type='text/javascript'>
$(function(){
$('#fileInput').uploadify();
});
</script>
$(函数(){
$('#fileInput').uploadify();
});
在获取的html中,它将在加载时绑定它,而不是试图实时监视它。另外,如果您再次获取html,它将被解除绑定。我做了您的更改,常规方法(没有活动元素)现在也不起作用。看看这里的js,你应该添加代码示例。没有它真的很难理解。很抱歉,我决定完全放弃上传,改用swfupload.org!