метод 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") }); |
forcej, встречные вопросы...
К чему такие "связки"? this.dTitle = $(d_class + " h1") // и $(this.dTitle).click() /// this.dBody = $(d_class + " p") // и $(this.dBody).hide() Откуда появилось? this.move И где полный тестовый пример? |
Цитата:
|
Цитата:
Цитата:
Цитата:
|
<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? и как сделать правильно, чтобы заработал ?) |
Цитата:
Что ты вообще собираешься замастырить? |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
сделал пример на jsfiddle.net http://jsfiddle.net/u4no7dwj/
|
Цитата:
|
forcej,
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script> $(function(){ function Dobj(d_class) { this.dTitle = $(d_class + " h1"); this.dBody = $(d_class + " p"); this.move = function() { $(this.dBody).toggle() } $(this.dTitle).click(this.move.bind(this)) $(this.dTitle).trigger('click') } var d = new Dobj(".d_class") }); </script> </head> <body class="d_class"> <h1>click</h1> <p>hide</p> </body> </html> |
Цитата:
<!DOCTYPE html> <html> <head> <script src='http://code.jquery.com/jquery-latest.js'></script> <!-- <script src="https://code.angularjs.org/1.3.9/angular.min.js"></script> <script src="https://code.angularjs.org/1.3.9/angular-route.js"></script> <link rel='stylesheet type=text/css href=tmp.css' /> --> <style type='text/css'> </style> <script type='text/javascript'> function Dobj(d_class) { this.cont = $(d_class) this.dTitle = this.cont.find("h1") this.dBody = this.cont.find("p"); var o=this.dBody; this.move = function() { alert(this.dBody) o.hide(); }; $(this.dTitle).click(this.move); }; $(function(){ var d = new Dobj(".d_class") }); </script> </head> <div class="d_class"> <h1>TITLE</h1> <P> содержимое<br> </P> </div> </body> </html> P.S. Перестань пихать жиквери-элементы в жиквери... ;) |
ksa, Понял, проблема в области видимости. Спасибо.
|
рони, $(this.dTitle).click(this.move.bind(this)) вы немогли бы чуть более подробно объяснить как это работает?
|
Цитата:
http://learn.javascript.ru/bind |
Цитата:
Привязка контекста (this) к функции в javascript и частичное применение функций |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 04:45. |