2013-06-01 3 views
1

У меня есть эта функция:Javascript - передать аргументы неанонимных функциям

$("#btn").click(function(e,someOtherArguments) 
    { //some code 
    e.stopPropagation();}); 

Он работает, но если я назвал функцию я не могу использовать e, потому что это не определенно.

var namedFunction= function(e,someOtherArguments) 
{ 
//some code 
    e.stopPropagation(); 
} 
$("#btn").click(namedFunction(e,someOtherArguments)); 

Я бы хотел (а) использовать этот namedFunction, потому что несколько кнопок его используют.

ответ

5

Либо:

$("#btn").click(namedFunction); 

Или:

$("#btn").click(function(e,someOtherArguments){ 

    namedFunction(e, someOtherArguments); 

}); 
+3

+1. В дополнение к этому @impeRAtoR, если вы скажете '$ (" # btn "). Click (anyFunction)' jQuery будет вызывать 'anyFunction()' с количеством аргументов, которые он должен передать, а не с количеством аргументов, которые вы можете или, возможно, не объявили 'anyFunction()' для принятия. (Действительно, в JS функция не должна явно объявлять именованные аргументы вообще, поскольку она может обращаться к ним через объект 'arguments'.) – nnnnnn

0

Вы можете вызвать эту функцию непосредственно в случае щелчка

$("#btn").click(function(e,someOtherArguments){ 
    namedFunction(e, someOtherArguments); 

}); 
0

Вы можете использовать apply так:

$("#btn").click(function(e,someOtherArguments){ 
    namedFunction.apply(this, arguments); 
}); 
Смежные вопросы