Reputation: 6025
What I want to do is pass the name of a function (X) as an argument into function Y, and then have function Y create an event handler that fires function X.
I want function Y to create the following:
$('#form').submit(function(e){e.preventDefault();X();});
I've tried:
var name="X()";
X(name);
function Y(id){
$('#element').submit(function(e){e.preventDefault();id;});
}
This, predictably, doesn't work. (I'd didn't really believe it would!) But how can it be done, either (1) by doing it the way I am, or (2) passing the entire X function wholus-bolus into Y?
Thanks.
Upvotes: 4
Views: 4899
Reputation: 119827
here's a demo if you feel doubtful skeptical (sounds better) :D
//create x
function x(){
alert('im from x');
}
//create y that receives the function
function y(callback){
//bind your handler which calls callback (which was x)
$('element').submit(function(){
callback();
});
}
//call y that sends over a reference of x
y(x);
Upvotes: 11
Reputation: 9691
your X object must be a function, not a string.
function X() { /*code*/ }
You can prevent the default action by returning false at the end of X;
function X() {
/*code*/
return false;
}
And you can use it inside another function like this:
function Y(callback){
$('#element').submit(callback);
}
Y(X);
Upvotes: 1