0

class submenu {
 constructor(id) {
  $( function () {
   this.elementId = id;
   console.log(this.elementId)
   $( '#' + this.elementId ).children().next().css('display', 'flex');

} ); } } printMenu = new submenu( 'top-menu-print' ); $(function (){ console.log(printMenu.elementId) })

консоль внутри класса показывает правильное значение. Но если запросить свойство объекта, он выдаст undefinrd

1 Answers1

0

зачем вам $( function () { в конструкторе? this будет указывать уже не контекст этой самой функции, а не класса.

class submenu {
  constructor(id) {
    //$( function () {
      this.elementId = id;
      console.log(this.elementId)
      $('#' + this.elementId).children().next().css('display', 'flex');
//} );

} } printMenu = new submenu('top-menu-print'); $(function() { console.log(printMenu.elementId) })

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="top-menu-print">test</div>

Если сильно хочется, то надо сохранить контекст вызова:

class submenu {
  constructor(id) {
    let self = this;
    $(function() {
      self.elementId = id;
      console.log(self.elementId)
      $('#' + self.elementId).children().next().css('display', 'flex');
});

} } printMenu = new submenu('top-menu-print'); $(function() { console.log(printMenu.elementId) })

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="top-menu-print">test</div>