2013-12-16 3 views
0
this.slideUpComm = function(){ 
    $("#Day-events-content p").addClass("hidden").slideUp("fast"); 
} 
this.showhideEvents = function() { 
    $("#Day-events-content").on("click", ".eventsToggle", function() { 
     var obj = $(this).next(); 
     if ($(obj).hasClass("hidden")) { 
      slideUpComm(); 
      $(obj).removeClass("hidden").slideDown(); 
     } else { 
      $(obj).addClass("hidden").slideUp(); 
     } 
    }); 
} 

Я хотел бы использовать функцию slideUpComm как функцию, которую я включаю в разные события, но консоль возвращает Uncaught ReferenceError: slideUpComm не определен. Как мне передать функцию для работы? Должен ли я использовать обратный вызов?Функция JQuery не определена

function dateObj() { 
this.d = new Date(); 
this.day = this.d.getDate(); 
this.numDay = this.d.getDay(); 
this.month = parseInt(this.d.getMonth()); 
this.year = this.d.getFullYear(); 

this.slideUpComm = function(){ 

} 
this.showhideEvents = function() { 

}); 
} 
} 

Мой объект выглядит выше.

+5

Что 'this', и как вы вызова функции? –

ответ

2

Проблема заключается в том slideUpComm является членом объекта ... так что вы должны использовать ссылку на объект для вызова метода

//create a closure varaible to hold the reference to the instance 
var self = this; 
this.slideUpComm = function(){ 
    $("#Day-events-content p").addClass("hidden").slideUp("fast"); 
} 
this.showhideEvents = function() { 
    $("#Day-events-content").on("click", ".eventsToggle", function() { 
     var obj = $(this).next(); 
     if ($(obj).hasClass("hidden")) { 
      //slideUpComm is a instance property so access it using the instance 
      self.slideUpComm(); 
      $(obj).removeClass("hidden").slideDown(); 
     } else { 
      $(obj).addClass("hidden").slideUp(); 
     } 
    }); 
} 
+0

Спасибо за вашу помощь. Хотелось бы спросить, так ли я использовал, чтобы создать объект в JS? Я имею в виду лучшую практику. – Dalli

+0

@ Далли прекрасно выглядит ... –

0

Может это не сводится к:

$("<object>").slideToggle(); 

?

+0

Я думаю, что это будет короче и чисто. – Dalli

1

slideUpComm - это функция dateObj, вы не можете напрямую вызвать функцию. Таким образом, для вызова функции вам необходимо создать экземпляр функции/объект

var a = new dataObj(); 

, то вы можете вызвать функцию с помощью

a.slideUpComm() 
+0

@ arun-p-johny ответ правильный, мой ответ был актуальным, когда вызов функции не был добавлен в вопрос –

Смежные вопросы