покритикуйте подход пожалуйста
Здравствуйте, пишу собственную UI библиотеку, она будет немного отличаться от существующих на данный момент. Прошу покритиковать метод создания объекта и работы с ним. Вот простейший пример:
function MySquare(id, name){
this.prop1=name;
this.showName=function(){
alert(this.prop1);
};
$("<div id='" +id+ "' style='width: 50px; height: 50px;' class='MySquare'></div>").appendTo($("body"));
}
$(".MySquare").live("click", function(){
var obj=getObjById($(this).attr("id"));
obj.showName();
});
|
Что вы этим хотели сделать?
Не впечатляет, не капли. И что за getObjById? хех и ещё по ржал, спасибо) Интересно почему практически все по началу думают, что надо работать с элементами только по их id и что без них никуда, что это центр вселенной и ппц. |
Спасибо за ответ,
этим я "абстрактно" создал квадрат, к которому могу обращаться как к объекту, не напрямую к тэгу, а к объекту, методы которого будут изменять тэг. Метод getObjById просто взял с потолка, грубо говоря он будет по ID возвращать объект (тот самый о котором я написал выше). То что поржали - всегда пожалуйста :) По поводу обращения к элементам по ID, и что это центр вселенной...на самом деле это холиварный вопрос, у каждого свое мнение на него своё, можно долго спорить что использовать, приводя в доводы скорость доступа и влияние на "рендер" страницы. Та библиотека которую я пытаюсь сделать будет предназначена исключительно для создания приложений, а не для обычного веба, а раз так то на любой форме приложения желательно однозначно идентифицировать объекты, тот пример что я привел он очень абстрактный, к примеру я сделал таблицу у которой будет всего один ID но её код занимает 2000 строк кода на javascripte, и это при использовании jquery. Если у кого еще есть критика не стесняйтесь :) а то опыта пока маловато, накосячу щас, потом разгребать будет сложнее. Всем спасибо |
а почему так?
$(".MySquare").live("click", function(){
var obj=getObjById($(this).attr("id"));
obj.showName();
});
так не работает?
$(".MySquare").live("click", function(){this.showName()});
Цитата:
И зачем метод getObjById, если $("#...") шустрее? |
на этот вопрос будет проще ответить кодом :)
//изменим немного
function MyButton(id, text){
this.click=function(){
};
$("<div id='" +id+ "' style='width: 50px; height: 50px;' class='MyButton'></div>").appendTo($("body"));
}
$(".MyButton").live("click", function(){
var obj=getObjById($(this).attr("id"));
obj.click();
});
//а теперь мы можем создать две кнопки без работы вручную с ДОМ, работая только с объектами
var btn1 = new MyButton("btn1", "Button1");
var btn2 = new MyButton("btn2", "Button2");
btn1.click=function(){
alert("btn1");
};
btn2.click=function(){
alert("btn2");
};
я просто хочу что пользователи библиотеки поменьше напрямую работали с ДОМ, в идеале им это вообще не должно быть нужно |
ладно, вы пока наверно не поймёте к чему я, с опытом придёт)))
|
| Часовой пояс GMT +3, время: 03:42. |