покритикуйте подход пожалуйста
Здравствуйте, пишу собственную 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, время: 23:16. |