karden, ибо в первом варианте Вы передаете функцию, а во втором Вы ее вызываете и передаете результат ее выполнения, т.е undefined.
Вот так будет работать.
$('.pMonth').click(function() {
switchMonth(1);
});
Или нужно написать функцию, которая будет возврашать функцию. Т.е
function switchMonth(Direction) {
return function() {
var TotalMonth = $('.CalDIV').length;
alert (TotalMonth);
}
}
$('.pMonth').click(switchMonth(1));
Ну, или так:
<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
<button>click</button>
<script>
function foo(e) {
alert(e.data.param);
alert(e.data.param1)
}
$('button').click({ param: 'foo', param1: 'bar' }, foo);
</script>