1

我一直在寻找一种将 jQuery 事件添加到按钮的方法,一旦单击该按钮将触发该事件,然后是 asp 回发。

添加事件很容易,但问题是暂时延迟了 asp 回发。

Asp 代码(在 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();
    });
}); 

在上面的代码中,我向按钮添加了一个点击事件,'cancelBtn' 是一个输入 [type="button"]。该事件将停止默认值,保存点击函数以供稍后调用,做一些动画然后调用点击函数。但是,这会因错误无效对象调用而失败。

所以我的问题:

这应该怎么做?或者我的解决方案可以修复吗?

谢谢

4

3 回答 3

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()就足够了。

于 2013-09-05T08:49:13.410 回答
0

首先你确定你的选择器cancelBtn是正确的吗?ASP.net 修改了 asp 元素的 id,这样你就不能再处理它们了$("MyElementId")。相反,您将不得不使用 eg $("[ID$=MyElementId]")。那么是什么样的对象cancelBtn呢?

为什么将点击事件保存在变量中?相反,您可以直接调用它:

jQuery(pnl).animate({
    height: 200
}, 300, 'swing', function () {
    jQuery(cancelBtn).click();
});

请注意,您不需要使用cancelBtn[0].

于 2013-09-05T08:49:22.893 回答
0

这也是可能的:

jQuery(cancelBtn).trigger("click");
于 2013-09-05T08:51:54.513 回答