Как получить указатель на элемент вызвавший функцию
Дорбый день форумчане,
Вроде всё просто но никак не могу разобраться а сроки поджимают( При нажатие на ссылку вызывается функция некоего объекта, в этой фунции по указатею this я имею доступ к данному объекту, а как получить доступ к указателю ссылки вызвавшей функцию??? Пробовал e.target | e.srcElement, но если в ссылку что то вложено, к примеру имидж, то я получаю уазатель на имидж, а мне нужна именно ссылка, которая вызвало функцию. Помогите разобраться:-? !
this.MyClass = function()
{
this.prop1 = 100;
this.init = function()
{
addEvent(document.getElementById("link"), "click", function(e){ActionOnClick(e)});
}
this.ActionOnClick = function(e)
{
//Я могу получить свойство prop используя this
alert(this.prop1);
//Как мне получить дескриптор ссылки которая вызвала эту функцию???
}
return this;
}
addEvent = function (elem, evType, fn)
{
if (elem.addEventListener) {
elem.addEventListener(evType, fn, false);
}
else if (elem.attachEvent) {
elem.attachEvent('on' + evType, fn)
}
else {
elem['on' + evType] = fn
}
}
myObject = MyClass();
myObject.init();
|
alert(this); |
так не получиться в данном случае alert(this) выведен [object Window] , а не элемент html на который нажали.
|
var addEvent = document.addEventListener ? function (element, eventType, listener, useCapturing) {
element.addEventListener(eventType, listener, useCapturing == true);
return listener;
} : function (element, eventType, listener) {
var _listener = function () {
listener.call(element, window.event)
};
element.attachEvent("on" + eventType, _listener);
return _listener;
};
|
к сожалению результат тот же. получаю доступ к объекту, но нет доступа к ссылке( неужели нет решения?
|
Изначально не правильно построен код.
Во первых myObject = *!*new*/!* MyClass();иначе this будет ссылаться на window как я понял потому и срабатвает функция ActionOnClick(e) хотя по идее она должна быть не определена. Во вторых
MyClass = function()
{
var T = this;
this.prop1 = 100;
this.init = function()
{
addEvent(document.getElementById("link"), "click", function(e){T.ActionOnClick.call(this,e)});
}
this.ActionOnClick = function(e)
{ // this = елемент с событием, т.е. A
//а обьект вам доступен по прежнему под переменной T;
//Я могу получить свойство prop используя T
alert(T.prop1);
//Как мне получить дескриптор ссылки которая вызвала эту функцию???
alert(this.tagName);
};
return this;
}
|
Большое спасибо! Вы мне очень помогли. Доработал код всё стало просто и понятно.
|
Ваш код хорошо работает в FF но IE никак не хочет возврашать указатель на ссылку с помощью this
|
Цитата:
Почитайте тут а конкретно Первая попытка: attachEvent + addEventListener в вашем коде выходом будет так:
else if (elem.attachEvent) {
23 elem.attachEvent('on' + evType, function(e){fn.call(elem,e)})
|
Спасибо вот теперь полный порядок
|
| Часовой пояс GMT +3, время: 03:32. |