Sunday 23 October 2016

jquery - How to read Javascript event programmatically




Imagine you have a button like this:







where the test functions is as follows:



function test(){
// do something
return true; // based on some logic return boolean
}



Now let's say,I don't know what is set for the onclick event, and at runtime I need to read the function or any code set to onclick and run it. Here is an example:



var btn = getElementById('myButton');
var btnOnClickFunc = btn.onclick;
if (btnOnClickFunc) {
// do something
}


I know this doesn't work, and that's actually my question. How can I read the button's onclick event in this example at runtime?




An example of this case is when the onclick is attached to the button later using jQuery.


Answer



If you need to do this you might want to eventually refactor your code so that you no longer need to do this. In the meantime you can use this hack:



$('#myButton').attr('onclick')();


The attribute 'onclick' actually returns a function, so calling it with () actually executes that function.




If you'd rather not use jQuery, you don't have to. The following works without it:



document.getElementById('myButton').onclick();


Also, for either of these two, you can break it up into two lines:



var clickFunc = $('#myButton').attr('onclick');
...
clickFunc();


No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...