метод 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, время: 06:52. |