Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.07.2012, 12:43
Интересующийся
Отправить личное сообщение для leko Посмотреть профиль Найти все сообщения от leko
 
Регистрация: 04.06.2012
Сообщений: 17

на что навешать обработчик события
насколько я знаю обычто навешивают на id или cssClass
но вот к примеру сейчас верстальщик хочет удалить некоторые cssClassы из атрибута class но так как в js эти cssClassы используются удалить их как-то затруднительно

на будущее собираюсь навешать обработчик события на атрибут "data-js-selector", чем это плохо, какие есть подводные камни?
поделитесь опытом/мнением как делаете/сделали бы вы
Ответить с цитированием
  #2 (permalink)  
Старый 18.07.2012, 12:48
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

leko,
Походу Вы говорите о jQuery, посколь навешивать на класс в нативном JS - затруднительно
Ответить с цитированием
  #3 (permalink)  
Старый 18.07.2012, 12:54
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

leko - Вам нужно разобраться что такое выборка елементов, а что такое навешивание событий.

Событие не навешивается на аттрибуты элемента, событие навешивается на сам элемент. В данном случае по аттрибутам Вы находите элемент на странице и после на сам элемент уже навешиваете событие.

В данном случае никаких проблем не будет, кроме того что JQuery будет немного медлене находить элемент на странице.
Ответить с цитированием
  #4 (permalink)  
Старый 18.07.2012, 13:11
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от leko
на будущее собираюсь навешать обработчик события на атрибут "data-js-selector", чем это плохо, какие есть подводные камни?
а как Вы думаете? в каждом "акте" поиска будут проверяться все элементы на странице.
var element = document.querySelector(,,,,,); // БАБАХ!! 20мс сожрали
// тут код
// а тут ещё поиск
var elements = document.querySelectorAll(........); // ВСПЫШКА !!! отожрали 50мс, ибо querySelector прекращает поиск после первого найденного, а эта штука идет дальше.


Сообщение от leko
поделитесь опытом/мнением как делаете/сделали бы вы
идеал - запилить ID нужному элементу, и огораживать верстальщика от этого ИД.
Ответить с цитированием
  #5 (permalink)  
Старый 18.07.2012, 13:13
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Magneto
кроме того что JQuery будет немного медлене находить элемент на странице.
не факт, принципы то одни, и распарсить в нескольких обрамлениях, на js - скорее всего чел не будет, будет парсить всю страницу - , хотя, к примеру там будет два тего данного класса заранее известно лежащих в div #Wrap1 и div #Wrap2 - так что правота под вопросом
При много тегах - может чаша и склонится в Вашу сторону
Ответить с цитированием
  #6 (permalink)  
Старый 18.07.2012, 13:20
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от melky
идеал - запилить ID нужному элементу, и огораживать верстальщика от этого ИД.
Идеал по скорости событие вешать в тег
Ответить с цитированием
  #7 (permalink)  
Старый 18.07.2012, 18:51
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Deff Посмотреть сообщение
Идеал по скорости событие вешать в тег
а ещё лучше - вешать делегировщика (делегатора, обработчика событий для делегирования, короче ) событий прямо в боди.

хм ... напомните, почему нельзя вешать обработчики через атрибуты? из-за того, что низя получить объект события?

да вроде можно :

<script>
function rand () {
    return 255 * Math.random() | 0;
}

function delegater (e) {
    e = e || event;
    e = e.target || e.srcElement;
    e.style.backgroundColor = "rgb("+ rand() +", " + rand() + ", " + rand() + ")";
}
</script>
<body onclick="delegater(event)">
<div>DIV</div>
<p>P</p>
<a href="#">A</a>
</body>

Потому что устарело? смешно же.

Последний раз редактировалось melky, 18.07.2012 в 19:03.
Ответить с цитированием
  #8 (permalink)  
Старый 18.07.2012, 20:21
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от melky
напомните, почему нельзя вешать обработчики через атрибуты?
тут скорее не нельзя, а это ссылка

Сообщение от melky
а ещё лучше - вешать делегировщика (делегатора, обработчика событий для делегирования, короче ) событий прямо в боди
Делегирование, конечно, хорошая вещь, но чтобы вешать прямо на body (типа если id или класс у цели такой-то, то делай то-то).
Имеется в виду лучше для производительности или удобства разработки (или может быть и то и другое)?
Ответить с цитированием
  #9 (permalink)  
Старый 18.07.2012, 20:54
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от bes
тут скорее не нельзя, а это ссылка
в отдельно взятом проекте можно этим пренебречь. и подписать в комменте, мол, так и надо, чтобы просматривальщики исходного кода страницы не возмущались.
Сообщение от bes
Делегирование, конечно, хорошая вещь, но чтобы вешать прямо на body (типа если id или класс у цели такой-то, то делай то-то).
live у JQ примерно так работает, и никто не возмущается.
Сообщение от bes
Имеется в виду лучше для производительности или удобства разработки (или может быть и то и другое)?
и того, и другого. вместе, не порознь.
Ответить с цитированием
  #10 (permalink)  
Старый 19.07.2012, 10:32
Интересующийся
Отправить личное сообщение для leko Посмотреть профиль Найти все сообщения от leko
 
Регистрация: 04.06.2012
Сообщений: 17

Сообщение от Magneto
Событие не навешивается на аттрибуты элемента, событие навешивается на сам элемент. В данном случае по аттрибутам Вы находите элемент на странице и после на сам элемент уже навешиваете событие.
да, ты прав
Сообщение от melky
а ещё лучше - вешать делегировщика (делегатора, обработчика событий для делегирования, короче ) событий прямо в боди.
может я туплю, но не понял что имеется в виду
Сообщение от melky
хм ... напомните, почему нельзя вешать обработчики через атрибуты? из-за того, что низя получить объект события?
а если потом надо поменять функцию, это ж сколько работы, да и вероятность где-то пропустить достаточна высокая
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает обработчик события в Mozilla Firefox Guliashik Events/DOM/Window 11 07.06.2012 00:31
О фрилансе (Личный опыт) free Оффтопик 105 18.08.2011 17:02
обработчик события focus для окна Сергей Д Internet Explorer 4 22.09.2010 17:33
Обработчик события click BOGDAN Общие вопросы Javascript 6 02.03.2009 20:52
отправка файла через обработчик события submit starrich AJAX и COMET 2 13.08.2008 22:29