Показать сообщение отдельно
  #5 (permalink)  
Старый 02.02.2017, 15:22
Кандидат Javascript-наук
Отправить личное сообщение для Diphenyl Oxalate Посмотреть профиль Найти все сообщения от Diphenyl Oxalate
 
Регистрация: 21.01.2017
Сообщений: 139

Опять не получается.

Пишу jQuery-подобную библиотеку, создаю методы:

$.proto.import( {
	html : function ( content ) {
		return this.attr( "innerHTML", content );
	},
	val : function ( content ) {
		return this.attr( "value", content );
	},
	id : function ( content ) {
		return this.attr( "id", content );
	}
);


Всё работает, но это индусский код. У меня же там будет ещё и .href(), .name(), .title(), .src(), ну в общем все стандартные атрибуты.

Решил сделать так:

var attrs = {
	"html" : "innerHTML",
	"val" : "value",
	"href" : 0,
	"src" : 0
};
for ( var i in attrs ) {
	$.proto[ i ] = function ( content ) {
		return this.attr( attrs[i] || i, content );
	}
}


Но метод перестаёт работать.
И что самое странное, если в attrs оставить только одну пару, например "html" : "innerHTML", то метод .html() начинает работать исправно! А если добавить пару "val" : "value" или любую другую, то он перестаёт работать. Стеснительный.
Ответить с цитированием