我一直在寻找一种向按钮添加jQuery事件的方法,一旦点击该按钮将触发事件,然后是asp回发。
添加事件很容易,但问题是暂时延迟了asp回发。
Asp Code(在C#中添加的事件):
<input runat="server" ClientIDMode="static "id="cancelButton">
JQuery代码:
var cancelBtn = jQuery('#cancelButton');
cancelBtn.click(function (e) {
e.preventDefault();
var cancelBtnEvent = cancelBtn[0].click;
jQuery(pnl).animate({
height: 200
}, 300, 'swing', function () {
cancelBtnEvent();
});
});
在上面的代码中,我向按钮添加了一个click事件,'cancelBtn'是一个输入[type =“button”]。该事件将停止默认值,保存点击功能以便稍后调用,执行一些动画然后调用单击功能。但是,这会因错误无效对象调用而失败。
所以我的问题:
应该怎么做?或者我的解决方案可以修复吗?
谢谢
答案 0 :(得分:1)
编辑1
这是一个适合你的简单技巧。对不起,我之前没有仔细注意过这个问题。
var IsFirstLoad = true;// Declare globally (outside ready function)
cancelBtn.click(function (e) {
if (IsFirstLoad) {
e.preventDefault();
}
jQuery(pnl).animate({
height: 200
}, 300, 'swing', function () {
jQuery('#cancelButton').click();
IsFirstLoad=false;
});
});
首先发布的答案。(在此场景中不起作用)。抱歉!
jQuery(pnl).animate({
height: 200
}, 300, 'swing', function () {
jQuery(cancelBtn).click();
});
尝试使用jQuery(cancelBtn).click();
代替cancelBtnEvent();
。如果cancelBtn
是一个jQuery元素,那么cancelBtn.click()
就足够了。
答案 1 :(得分:0)
首先,您确定选择器cancelBtn
是否正确? ASP.net修改了asp元素ID,因此您无法再通过$("MyElementId")
解决它们。相反,你将不得不使用例如$("[ID$=MyElementId]")
。那么什么样的对象是cancelBtn
?
为什么要将click事件保存在变量中?相反,你可以直接调用它:
jQuery(pnl).animate({
height: 200
}, 300, 'swing', function () {
jQuery(cancelBtn).click();
});
请注意,您不需要使用cancelBtn[0]
来获取DOM元素。
答案 2 :(得分:0)
这也是可能的:
jQuery(cancelBtn).trigger("click");