提问人:Sarawut Positwinyu 提问时间:7/31/2012 最后编辑:Sarawut Positwinyu 更新时间:8/1/2012 访问量:224
是否可以在 Jquery 中将绑定与非标准客户端事件一起使用
Is it possible to use bind with non standard client side event in Jquery
问:
例如,此 AsyncFileUpload,有一个事件“OnClientUploadComplete”
我可以做类似的事情吗
$("#ctl00_MainContent_AsyncFileUpload1_ctl02")
.bind("OnClientUploadComplete", function () { alert("test");
})
<ajaxToolkit:AsyncFileUpload OnClientUploadComplete="uploadComplete" runat="server" ID="upload" Width="400px" UploaderStyle="Modern" CompleteBackColor="White" UploadingBackColor="#CCFFFF" ThrobberID="imgLoader" OnUploadedComplete="AsyncFileUpload1_UploadedComplete" OnClientUploadStarted = "uploadStarted" /> <asp:Image ID="imgLoader" runat="server" ImageUrl="~/images/loader.gif" /><br /><br /> <img id = "imgDisplay" alt="" src="" style = "display:none"/>
$addHandler($("#<%=upload.ClientID %>"), 'uploadComplete', (function () { alert("test"); })); function uploadStarted() { $get("imgDisplay").style.display = "none"; } function uploadComplete(sender, args) { var imgDisplay = $get("imgDisplay"); imgDisplay.src = "images/loader.gif"; imgDisplay.style.cssText = ""; var img = new Image(); img.onload = function () { imgDisplay.style.cssText = "height:100px;width:100px"; imgDisplay.src = img.src; }; img.src = "<%=ResolveUrl(UploadFolderPath) %>" + args.get_fileName(); } </script>
答:
0赞
Frédéric Hamidi
7/31/2012
#1
不,你不能这样做。
AJAX 控件工具包中的自定义事件是在浏览器的事件系统之外实现的。有关详细信息,请参阅此处。
您必须使用组件提供的方法:add_uploadComplete()
$find("yourBehaviorID").add_uploadComplete(function() {
alert("test").
});
扩展程序的位置(默认为扩展控件的)。yourBehaviorID
BehaviorID
ClientID
评论
0赞
Sarawut Positwinyu
7/31/2012
.addadd_uploadComplete()怎么来,你怎么找到它?
0赞
Frédéric Hamidi
7/31/2012
@Sarawut,在源代码中。实际上,所有 AJAX 控件工具包的组件都以这种方式公开自定义事件。
0赞
Frédéric Hamidi
8/1/2012
您是否传递了正确的行为 ID?您能否使用定义扩展器的页面标记部分来更新您的问题,以便我们仔细检查?AsyncFileUpload
0赞
Frédéric Hamidi
8/1/2012
@Sarawut,请尝试使用 and 而不是 .后者只能用于注册“标准”DOM 事件,而不是自定义事件 IIRC,我很确定它的第一个参数应该是一个 DOM 元素,而不是一个 id 选择器。$find()
add_uploadComplete()
$addHandler()
评论
OnClientUploadComplete