Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   метод click внутри объекта (https://javascript.ru/forum/misc/54002-metod-click-vnutri-obekta.html)

forcej 27.02.2015 13:16

метод click внутри объекта
 
Здравствуйте, объясните пожалуйста наглядно почему в данном примере событие click отказывается работать и как правильно реализовать подобный механизм внутри объекта?

function Dobj(d_class) {
    
    this.dTitle = $(d_class + " h1")
    this.dBody = $(d_class + " p")

    $(this.dTitle).click(this.move)

    this.move = function() { 
      $(this.dBody).hide()
    }
     
}


$( document ).ready(function() {        
  var d = new Dobj(".d_class")
});

ksa 27.02.2015 13:24

forcej, встречные вопросы...

К чему такие "связки"?
this.dTitle = $(d_class + " h1")
// и
$(this.dTitle).click() 
///
this.dBody = $(d_class + " p")
// и
$(this.dBody).hide()

Откуда появилось?
this.move


И где полный тестовый пример?

forcej 27.02.2015 13:40

Цитата:

Сообщение от ksa (Сообщение 358785)
forcej, встречные вопросы...

К чему такие "связки"?
this.dTitle = $(d_class + " h1")
// и
$(this.dTitle).click() 
///
this.dBody = $(d_class + " p")
// и
$(this.dBody).hide()

Откуда появилось?
this.move


И где полный тестовый пример?

Связки для того что бы в дальнейшем можно было наследовать от Dobj имея в потомках базовые свойства которых будет больше. this.move определяется ниже, такая запись не корректна для конструктора? к слову если вызывать click после определения move он по прежнему не работает. Это полный тестовый, остальное пока в голове

ksa 27.02.2015 13:44

Цитата:

Сообщение от forcej
this.move определяется ниже, такая запись не корректна?

Этого свойства на тот момент просто нет.

Цитата:

Сообщение от forcej
Связки для того что бы в дальнейшем можно было наследовать от Dobj

Т.е. дважды совать элемент-жиквери в жиквери эт так надо для наследования? :blink:
Цитата:

Сообщение от forcej
Это полный тестовый, остальное пока в голове

Это просто огрызок кода и не более того...

forcej 27.02.2015 13:51

<html> 
     <head> 
          <title>html для примера</title>  
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
         <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
         <script src="script.js"></script>         
     </head> 
     <body>     
          <div class="d_class"> 
              <h1>TITLE</h1>
               <P>
                   содержимое<br>
              </P>
          </div>          
     </body> 
</html>


function Dobj(d_class) {
    this.cont = $(d_class)
    this.dTitle = this.cont.find("h1")
    this.dBody = this.cont.find("p") 

    this.move = function() { 
      $(this.dBody).hide()
    }
     
    $(this.dTitle).click(this.move)
}


$( document ).ready(function() {        
  var d = new Dobj(".d_class")
});



Хорошо, понял вас. Исправил то о чём вы говорите, почему этот огрызок не работает теперь при инициализации экземпляра d? и как сделать правильно, чтобы заработал ?)

ksa 27.02.2015 14:09

Цитата:

Сообщение от forcej
почему этот огрызок не работает теперь при инициализации экземпляра d?

По огрызкам не всегда понятно почему они не работают... Ты в состоянии сделать полный тестовый пример?

Что ты вообще собираешься замастырить?

forcej 27.02.2015 14:21

Цитата:

Сообщение от ksa (Сообщение 358805)
По огрызкам не всегда понятно почему они не работают... Ты в состоянии сделать полный тестовый пример?
Что ты вообще собираешься замастырить?

Ну конечно, в состоянии. Просто скажи что ты подразумеваешь под полным тестовым?) На данном этапе я собираюсь сделать несколько классов потомков, которые будут работать с похожими html данными но немного отличаться в поведением. Например переопределю move для двух других потомков, чтобы они скрывали <p> иначе.

forcej 27.02.2015 14:22

Цитата:

Сообщение от ksa (Сообщение 358805)
По огрызкам не всегда понятно почему они не работают...

Мне бы понять почему click не хочет работать внутри объекта.

forcej 27.02.2015 14:24

Цитата:

Сообщение от ksa (Сообщение 358805)
полный тестовый пример

в плане загрузить всё это барахло на какой-нибудь тестовый сервис? дык, сейчас сделаю.

ksa 27.02.2015 14:25

Цитата:

Сообщение от forcej
Мне бы понять почему click не хочет работать внутри объекта.

А я пока не в стоянии даже потестить твое изобретение...


Часовой пояс GMT +3, время: 21:43.