Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Функцияч для обращения к элементам шалит (https://javascript.ru/forum/dom-window/19261-funkciyach-dlya-obrashheniya-k-ehlementam-shalit.html)

pharrell 30.07.2011 00:00

Функцияч для обращения к элементам шалит
 
Есть у меня своя функция для обращения к элементам :
function $(e,context)
{
	//context=(context ? context : document);
	if(typeof e=="object")el=e;
	else
	{
		el=e.slice(1);
		em=e.charAt(0);
		switch(em)
		{
			case "#":el=document.getElementsByTagName(el);break;
			case ".":el=document.getElementsByClassName(el);break;
			case "*":el=document.getElementsByName(el);break;
			default:el=document.getElementById(e);
		}
	}
	if(el!=null&&el!="undefined")
	{
		el.html=function(d){this.innerHTML=d;return $(this)}
		el.txt=function(d){this.innerText=d;return $(this)}
		el.attr=function(attr,val){this.setAttribute(attr,val);return $(this)}
		el.addEvent=function(ev,fn)
		{
			if (this.addEventListener)
				this.addEventListener(ev, fn, false);
			else
			{ 
				if (this.attachEvent)
					this.attachEvent('on' + ev, fn)
					else 
				this['on' + ev] = fn
			}
			return $(this)
		};
		el.click=function(f){addEvent(this,"click",f);return $(this)};
		el.onchange=function(f){this.addEvent("change",f);return $(this)};
		el.onclick=function(f){this.setAttribute("onclick",f);return $(this)};
		el.del=function(){this.parentNode.removeChild(this)};
	}
	return el;
}


Только что заметил проблему
Если делать так
<a onclick="$(this).html('hello')">click me</a>

И нажать на ссылку,то на эту ссылку вешаеться обработчик onclick и onchange, который никак не относиться к изначальному onclick, а соответствует методу onclick из функции $.
А если нажать на нее второй раз, то атрибут onclick становиться ="[object MouseEvent]"
помогите пожалуйста!!!Что делать

Sweet 30.07.2011 02:23

Цитата:

Сообщение от pharrell
Что делать

Могу сказать, как делать не надо. Весь код - это неправильно, и вовсе не то, что ты думаешь.

pharrell 30.07.2011 03:35

А как надо?

melky 30.07.2011 10:26

а ты что вообще хотел, когда этот код писал? мне непонятно,зачем все это :)

Sweet 30.07.2011 11:57

Я полагаю, это бурная фантазия на тему jQuery.

pharrell 30.07.2011 19:01

melky ава клевая!!)
Я хотел когда писал этот код удобно обращаться к элементам без jquery , потому что мне большего ненадо)!А как думаете, стоит ради этого ее подключать?

Sweet 30.07.2011 19:05

Конечно, лучше подключить jQuery, чем городить ошибочный код.

melky 30.07.2011 21:57

Цитата:

Сообщение от pharrell (Сообщение 116320)
А как думаете, стоит ради этого ее подключать?

Цитата:

Сообщение от Sweet (Сообщение 116321)
Конечно, лучше подключить jQuery, чем городить ошибочный код.

не стоит [trollface].

подключай Sizzle(он вшит в jquery)

или YASS. yass вроде как самая быстренькая.

Цитата:

Сообщение от pharrell (Сообщение 116320)
melky ава клевая!!)

спасибо


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