如何在标记执行事件之前绑定jquery事件

时间:2009-10-12 09:49:22

标签: asp.net jquery

<input type="button" onclick="executes second" />

$('input').click(function() { //this first }}

P.S。 onclick =“执行第二个” - 无法删除(其__doPostBack)

4 个答案:

答案 0 :(得分:4)

试试......

$(document).ready(function(){
    $("input").removeAttr("onclick");
    $("input").click(function(){
        // do first
        my_first_function();                
        // do second
        my_second_function();
        return false;               
    });
});

答案 1 :(得分:2)

难道你不能做这样的事情:

< input type="button" onclick="do_something();" />

function do_something() {
    // this first
    // then second?
 }}

答案 2 :(得分:0)

如果你使用jQuery,则不需要点击HTML:

$('input').click(function() {
    //this first
    something();
    // this last
    playSound();
});

修改
只需使用jQuery删除onclick属性:

$('input').removeAttr("onclick");

您可以将其放入文档准备就绪或只是将其附加到您的电话

 $('input').removeAttr("onclick").click(function() {...});

答案 3 :(得分:0)

我的猜测是内联的onclick处理程序无法删除,因为它已由ASP.NET输出。要解决此问题,您需要覆盖ASP.NET的doPostBack方法,以便在回发发生之前注入您的函数。尝试在页面中包含以下函数,然后使用它来添加事件处理程序:

更新:重新阅读并意识到这个答案略微错过了标记 - 它基本上允许您在回发之前触发事件,但不一定附加到按钮的onclick处理程序。

var addToPostBack = function(func) {
    var old__doPostBack = __doPostBack;
    if (typeof __doPostBack != 'function') {
        __doPostBack = func;
    } else {
        __doPostBack = function() {
            func();
            old__doPostBack.apply(this, arguments);
        }
    }
};

...

<input type="button" id="btn" onclick="..." />

...

addToPostBack(function() { alert("You're posting back!"); });