Jump to content
  • 0

Ссылка на родителя


Дядя Саша
 Share

Question

Может кто нибудь подскажет, возможно ли получить ссылку на родительский объект. К примеру:

function a() {
this.elem = document.createElement("a");
this.url = "http://www.google.com";
}

var obj = new a();

Далее к примеру используем ссылку по е? назначению

и, например, в некоторой ф-ии, при щелчке на ссылке получаем

ссылку на не? (то есть на this.elem).

Так вот вопрос, как получить значение this.url? Или это вообще возможно?

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Послушай ка, я конкретно поставил вопрос, на который ты по всей видимости ответа не знаешь, в таком случае за язык никто не тянет. То что я тут парю не имеет никакого значения, есть только пример (который не является рабочим кодом, написан исключительно для лучшего представления) и вопрос. Мне надо получить ссылку на родительский объект. И я конкретно спросил как это сделать, и возможно ли это вообще. Но, заметь, я не просил разъяснять мне что тут написано и как сделать "правильно".

Link to comment
Share on other sites

  • 0

Послушй ка, ты бы пыл умерил, а то как идиот выглядишь.

function a() {

this.elem = document.createElement("a");

this.url = "http://www.google.com";

this.OnElemClick = this.bindAsEventListener(this.ElemClick);

this.bindEvent(this.elem, 'click', this.OnElemClick);

}

a.prototype = {

ElemClick: function (event) {

alert(this.url);

}

bindEvent: function(element, event, callBack){

if (element.addEventListener) {

element.addEventListener(event, callBack, false);

} else {

element.attachEvent('on' + event, callBack);

}

},

unbindEvent: function(element, event, callBack){

if (element.removeEventListener) {

element.removeEventListener(event, callBack, false);

} else if (element.detachEvent) {

element.detachEvent('on' + event, callBack);

}

},

bindAsEventListener: function (callBack) {

var _this = this;

return function(event) {

return callBack.call(_this, event || window.event);

}

}

}

И кстати, в вопросе ты написал бред непонятный, над которым мне пришлось долго голову ломать, хотя-бы потому, что ты употребил термин ?родительский объект?, хотя он никакой не родитеский даже примерно, он просто содержит ссылку на элемент.

Link to comment
Share on other sites

  • 0

Я понял, тут получается что ф-ия обработчик запускается в контексте самого обьекта а, тогда при клике мы получаем ссылку на него и можем получить доступ ко всем его свойствам и методам, и к тому же url. Это понятно, но у меня по ряду причин так сделать не выходит( Сейчас буду переделывать. Другого способа точно нет?

На сч?т моего вида, я бы поспорил, ведь вопрос был поставлен более чем конкретно и как говорится "не надо лохматить бабушку")) За мысль спасибо :D

Вы заблуждаетесь... он родительский.

Link to comment
Share on other sites

  • 0

Вообще, bindAsEventListener не обязательно должна вызывать в контексте, может просто параметр передать

bindAsEventListener: function (callBack) {

var elem = this;

return function(event) {

return callBack.call(this, elem, event || window.event);

}

}

собственно как и не обязательно должна передавать именно объект, членом которого является:

function bindAsEventListener (object, callBack) {

return function(event) {

return callBack.call(this, object, event || window.event);

}

}

Link to comment
Share on other sites

  • 0

Не выходит так... у меня так построено приложение, что ф-ия обработчик вызывается в контексте объекта, на который и был повешен слушатель. В данном примере это this.elem.

Вот как у меня крепятся слушатели.

	this.body.click = [this.actions]; //тут массив, и ф-ии вызываются по порядку.

Все события слушаются на уровне документа.

	var obj = $.Event.target;

while (obj && $.Event.bubbles) { //тут события "всплывают"
$.fn.runHandlers(obj);
obj = obj.parentNode;
}

Тут выполняются ф-ии обработчики

	if (typeof handlers[i] === "function") {
handlers[i].call(obj);
}

Ой, я же сам указываю контекст!

Link to comment
Share on other sites

  • 0

Все же так у меня сделать не выходит(

Не то чтобы руки кривые, просто приложение построено таким образом, может и покажется что "кривым образом".

Точно нет другого способа получить ссылку на this из this.elem? Ибо на данный момент мне пришлось явно создать ссылку, вот так this.elem.parent = this. Такой вариант можно считать приемлемым?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy