[html, jquery] custom attributes

Alena_08_11

Недавно начал изучать javascript вообще и jquery в частности (Изучать применением на практике в своём django-проекте).
В общем на странице куча однотипных групп всяких элементов, с которыми нужно производить однотипные действия, но только по событиям внутри группы и соответственно каждое событие должно что то делать с элементами внутри группы (как правило, но не всегда).
Я стал заморачивацца сочинянием разных мудреных id-шников, чтобы в jquery можно было выбирать их более менее отдельно (то есть у группы - часть id общая, в начале и/или в конце). Но внезапно понял, что если бы я мог написать что нить типа <div .... myshit="shit1" ...>, а затем $('[myshit=shit1]')... то это сильно упростило бы мне жизнь. Проверил - работает, но в интернетах пишут что так делать не то чтобы не рекомендуется, а вообще _НЕЛЬЗЯ_. Интересует мнение, почему _НЕЛЬЗЯ_ ? На какие проблемы можно нарваццо ? (в интернетах как то особо не аргументируют сию точку зрения).
ps. Сорри за пунктуационные ошибки.

Dasar

> Интересует мнение, почему _НЕЛЬЗЯ_ ? На какие проблемы можно нарваццо ?
не все браузеры поддерживают навешивание custom-аттрибутов на dom-element-ы.
и не факт, что это разрешает стандарт

Alena_08_11

хмм, ну как аргументация к "делать не рекомендуется" это проходит. Но вот для "делать НЕЛЬЗЯ" - слабоватая, имхо, аргументация. ie8, ff3, chrome это хавают.

Commandor

Можно. Но не рекомендуется - не пройдет w3c валидацию и на тебя будут смотреть, как на быдлокодера :)
Для поставленой задачи грамотнее юзать css-классы.

okis

с предложением согласен, но
на тебя будут смотреть, как на быдлокодера
скажи это вебмастерам гугла, микрософта и ещё кучи компаний

PooH

ммм
что-то очень сложное, что разбивание по классам и dom-пути не помогает?
я обычно в таких случаях каждую группу оборачиваю элементом с id, внутри группы сортирую по классам
соот-но используя dom-пути потом легко найти что-то в конкретной группе, а также все однотипные элементы

Alena_08_11

хмм. Только что узнал, что каждому элементу можно указать более одного класса. Да, это действительно решает проблему. Каждому элементу по классу непосредственно стилей, а остальные как селекторы.
Хех. недостаток метода изучения применением на практике :) Знал бы сразу про много классов - не стал бы огород городить.
ps. А dom-пути это что за звери ? Можно пример ?

Commandor

скажи это вебмастерам гугла, микрософта и ещё кучи компаний
Вебмастеров гугла и микрософта тоже интересует ответ на вопрос "На какие проблемы можно нарваццо?", как и топикстартера?
ps. А dom-пути это что за звери ? Можно пример ?
"div.class1 div.class2 a" - все ссылки (элементы a находящиеся внутри div-а с классом class2, который находится внутри div-а с классом class1

Alena_08_11

хмм. Нада покурить доки. Я читал что для этого нада использовать ">" ( div.class1 > div.class2 и что это находит непосредственно вложенные, типа глубже не копает. По ходу херню читал. Попробую найти и почитать нехерню.
up:
Ага, то есть если ">" - то находит непосредственно вложенные, а если тупо пробел - то все все все вложенные на любой глубине ? по ходу я _недочитал_ ту самую, как оказалось, нехерню. :)
anyway всем спасибо

hwh2010

Проверил - работает
забудь про такие соображения, когда занимаешься разработкой веб-приложений

conv3rsje

не пройдет w3c валидацию
xhtml 1.1 пройдет, если правильно указать в заголовке ссылку на расширяющий dtd.
Сейчас навскидку не скажу как это делать, но несколько лет назад игрался с расширением xhtml своими ништяками.

PooH

Ага, то есть если ">" - то находит непосредственно вложенные, а если тупо пробел - то все все все вложенные на любой глубине ? по ходу я _недочитал_ ту самую, как оказалось, нехерню.
да
div a - все ссылки в дивах
div > a - все непосредственно дочерние ссылки -
это всего ли css
у jquery есть еще куча механизмов
http://api.jquery.com/category/selectors/

artimon

div + a - все ссылки имеющие одного и того же родителя, что и див
Что?
RTFM http://www.w3.org/TR/CSS/selector.html#adjacent-selectors

PooH


div + a - все ссылки имеющие одного и того же родителя, что и див
Что?
хуйню я спорол

Hastya

так делать не то чтобы не рекомендуется, а вообще _НЕЛЬЗЯ_.
Можно. Все современные браузеры это поддерживают и все так делают. См. Facebook, Google.

Phoenix

Можно. Но не рекомендуется - не пройдет w3c валидацию и на тебя будут смотреть, как на быдлокодера :)
Для поставленой задачи грамотнее юзать css-классы.

а что его минусуют-то? всё по делу же сказал. Нафиг нужны непонятные аттрибуты, если всё могут решить class и id

Alena_08_11

Нафиг нужны непонятные аттрибуты, если всё могут решить class и id
Ещё один юзкейс нарисовался.
Иногда по событию на элементе нужно отправить ajax post запрос с кучей переменных. Возникает соблазн эти переменные распихать по кастом атрибутс. Как в этом случае без них обойтись ? (не, ну конечно можно на этапе генерации страницы все эти переменные засунуть в session-data связав с id элемента. А без сессий и кук разрулить можно ?)

okis

классов же может быть много. или это не о том?

Dasar

>Иногда по событию на элементе нужно отправить ajax post запрос с кучей переменных. Возникает соблазн эти переменные распихать по кастом атрибутс.
не понял идею.
а что дальше делать с этими распиханными аттрибутами?

artimon

Хранить данные в классах не труЪ
Мы храним данные примерно так:
<span onclick="return {name:'item', count: 10}">…</span>

Валидно и данные легко достаются простым
data = span.onclick;

Alena_08_11

не понял идею.
а что дальше делать с этими распиханными аттрибутами?
Возможен вариант, что это я пока не понял идею, но ...
в функции обработчике например click
мы выдергиваем значения этих атррибутов, формируем post запрос из значений этих атрибутов, посылаем аджаксом на сервер, получаем респонс и что то делаем на странице. (Ajax в теории ведь примерно так работает ?)

Alena_08_11

Хранить данные в классах не труЪ
Мы храним данные примерно так:
code:
<span onclick="return {name:'item', count: 10}">…</span>
Валидно и данные легко достаются простым
code:
data = span.onclick;
Идею понял, то есть примерно так ? :

$(...).click(function
{
data = this.onclick;
// .... Тут делать всю хрень по формированию post запроса с этой data ...//
}

Dasar

>мы выдергиваем значения этих атррибутов, формируем post запрос из значений этих атрибутов, посылаем аджаксом на сервер, получаем респонс и что то делаем на странице. (Ajax в теории ведь примерно так работает ?)
в jquery для этого есть
http://api.jquery.com/category/data/

Alena_08_11

Тоже вариант, спасибо.

Phoenix

 
ajax post запрос с кучей переменных.

которые что? меняются? нафига их вообще пользователю передавать? передай ему id. а на сервере храни все эти аттрибуты.
что-то у тебя какая-то каша в голове
дочитал тему. Понял, зачем.
Оставить комментарий
Имя или ник:
Комментарий: