绕过onclick事件并在执行一些代码后恢复onclick

时间:2014-07-31 08:09:23

标签: javascript jquery

我有以下html按钮,其中包含onclick事件

<button onclick="alert('button');" type="button">Button</button>

以及以下js:

$('button').on('click', function(){
    alert('jquery');
});

通过jQuery / Javascript执行一些js代码之后,我想继续使用按钮onclick处理程序,例如:首先是jquery alert,而不是按钮alert。

我尝试过很多像&#34;删除attr并在执行我的代码后触发它并触发点击(它陷入循环,我们知道为什么:))&#34;和&#34;关&#34;单击。但没有运气。

可以通过jQuery / javascript吗?

任何建议非常感谢

由于

3 个答案:

答案 0 :(得分:0)

创建一个单独的javascript函数,其中包含单击按钮时要执行的操作(即删除onclick属性并在其自己的函数中添加替换代码)。

然后在

结束时调用该函数
$('button').on('click', function(){
    alert('jquery');
});

所以你会留下类似的东西

function buttonFunction()
{
  //Do stuff here
}

$('button').on('click', function()
{
  alert('jquery');
  buttonFunction();
});

<button type="button">Button</button>

答案 1 :(得分:0)

有点棘手。 http://jsfiddle.net/tarabyte/t4eAL/

$(function() {
    var button = $('#button'),
        onclick = button.attr('onclick'); //get onclick value;

    onclick = new Function(onclick); //manually convert it to a function (unsafe)

    button.attr('onclick', null); //clear onclick
    button.click(function() { //bind your own handler
        alert('jquery');
        onclick.call(this); //call original function
    })
});

虽然有更好的方式来传递params。您可以使用数据属性。

<button data-param="<%= paramValue %>"...

答案 2 :(得分:0)

你可以这样做:

http://jsfiddle.net/8a2FE/

<button type="button" data-jspval="anything">Button</button>

$('button').on('click', function () {

    var $this = $(this),                //store this so we only need to get it once
        dataVal = $this.data('jspval'); //get the value from the data attribute

    //this bit will fire from the second click and each additional click
    if ($this.hasClass('fired')) {

        alert('jquery'+ dataVal);
    }
    //this will fire on the first click only
    else {

        alert('button');

        $this.addClass('fired'); //this is what will add the class to stop this bit running again
    }

});