Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.10.2014, 06:21
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Как найти щелкнутый элемент в коллекции
Или как вообще это делается?

Например берем с формы только то, что удовлетворяет некоторым условиям и собираем в коллекцию.

var fields={};

for(var i=0; i<form.elements.length;i++)
  
  var elem = form.elements[i];
  
  if(//
  if(//
  if(//

  fields[elem.name]={//some props}

}


Затем общим порядком

form.addEventListener('change', some_func);

где-то выше есть такая функция

var some_func=function(event){
  var elem = event.target;
/*
И вот теперь что мне с этого elem, если я не знаю где он в коллекции, то есть где все его нормализованные props?
*/
};


Поначалу я тупо писал все прямо в атрибуты. Берешь event.target и все при нем.

Разделил и понял что теперь найти их можно только по индексу, например по имени как выше в примере.

В общем как оно делается в контексте прерываний чтобы получил event.target и все при нем, но не атрибутах. Или это нормально - валить в атрибуты?
Ответить с цитированием
  #2 (permalink)  
Старый 14.10.2014, 06:24
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

То есть если я сделаю (в каноничном синтаксисе)

elem.maxlength=(elem.hasAttribute('maxlength'))?parseInt(elem.getAttribute('maxlength'):null;

оно точно останется null, а не "null", и 123, а не "123" применительно к девиациям браузеров?

Кстати JQ идеологически выдержано возвращает по attr() не значение атрибута, а его имя если таковой имеется из тех самых типа boolean. ПравЕльные там поца все пишут.

Последний раз редактировалось kostyanet, 14.10.2014 в 06:27.
Ответить с цитированием
  #3 (permalink)  
Старый 14.10.2014, 07:19
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Нихера не понял. В чем проблема-то? В том, что код работает не так, как ты его задумал? Но для этого не достаточно просто "задумать" - браузер не читает мысли..
Сообщение от kostyanet
elem.hasAttribute('maxlength')
google "property vs attribute"

Сообщение от kostyanet
Кстати JQ идеологически выдержано возвращает по attr() не значение атрибута, а его имя если таковой имеется из тех самых типа boolean.
google "property vs attribute"

Сообщение от kostyanet
ПравЕльные там поца все пишут
Все несоответствия там по причине бестолковости народа, юзающего эту либу. Если делать все как надо - народ будет ныть что "jQuery не работает". Ну и кое что - ради совместимости.

Что если какой-нибудь погромист вроде тебя напишет if ($el.attr('disabled')) ?
Если честно вернуть пустую строку, то у него возникнет батхерт. Как у тебя сейчас.
Для таких атрибутов важно не его значение, а факт наличия этого атрибута. Поэтому какая разница что в значении? Тем более, юзать надо prop() , а не attr() .
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 14.10.2014, 08:15
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Так юзал, он тупо возвращает true/false.

Не в этом дело, вопрос, вроде ясно изложил. Ну напихали вы элементов в коллекцию, то есть рядом с elem:elem лежат его проперти - елемент щелкнули - как их теперь достать?

Короче, есть вот такой пердимонокль: http://www.html5rocks.com/en/tutoria...ustomelements/ однако с первой же картинки я задумалсО - а почему это гугль такую классную штуку не юзает, а городит лес из дивов?

Да потому что это сука извращенное извращение XSL. Лишь бы блеать не развивать эту технологию, на все готовы, только бы не касаться XML.

Ну ладно, вот вы лично как сделали бы? На форме куча элементов (объектов), у них свои атрибуты (которые превращаются в свойства) и как по щелчку найти объект в котором этот самый щелкнутый элемент?

Не обязательно именно так - как вообще оно связывается?
Ответить с цитированием
  #5 (permalink)  
Старый 14.10.2014, 08:17
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Ну то есть я беру данные из атрибутов, пусть так нельзя, я могу их отпостить сразу объектом с сервера в страницу и профтыкать туда елементы - ну х с того?

То есть пока на сам элемент не повесишь функцию - его придется искать по индексам, правильно? UPD, если и повесишь - те же яйца. Пока в атрибуты не профтыкаешь - придется искать.

Последний раз редактировалось kostyanet, 14.10.2014 в 08:23.
Ответить с цитированием
  #6 (permalink)  
Старый 14.10.2014, 08:22
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

У тебя нестандартные атрибуты? Нахера ты парсишь maxlength? Это же стандартный атрибут, он мапится на свойство maxLength
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 14.10.2014, 08:24
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

<elem data-custom-attr="blabla">
<script>
if (elem.dataset.customAttr == 'blabla') { .. }
</script>
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #8 (permalink)  
Старый 14.10.2014, 08:29
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от danik.js
google "property vs attribute"
Нет у елемента пропертей кроме тех, которые запарсены с атрибутов.

А вот в XML имеется дилемма entity vs. attribute или попсово http://www.w3schools.com/dtd/dtd_el_vs_attr.asp

<entity></enity> - сущность которая может быть чем угодно
<entity attr="attribute"/> - глухая сущность с атрибутом
Ответить с цитированием
  #9 (permalink)  
Старый 14.10.2014, 08:30
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

В ES6 есть WeakMap()
Есть полифил, но хз насколько он "weak"

var fields = new WeakMap();

fields.set(elem, {some: props});

..

var props = fields.get(event.target);
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #10 (permalink)  
Старый 14.10.2014, 08:34
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от danik.js
У тебя нестандартные атрибуты? Нахера ты парсишь maxlength? Это же стандартный атрибут, он мапится на свойство maxLength
Этот стандартный, а required="5" не стандартный.

Да блин какая разница, могу объектом отпостить с сервера - не в этом дело. Дело в том что связь между элементом и его свойствами разрывается если в него не профтыкать эти свойства атрибутами, блеать.

В js-объекте лежит elem и куча пропертей - бестолковая хрень. В elem напихали атрибутов и запарсили - часть браузером, часть сами - нормально. Но что будет с той частью которую сами - она точно не сдохнет в каком-нить православном ИЕ?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать чтобы элемент появлялся при скроле страницы, у определенного класса. SnakeAce Общие вопросы Javascript 1 30.01.2013 14:32
Как перевести фокус на следующий элемент? Shitbox2 jQuery 3 03.11.2012 15:57
Как найти точки соприкосновения двух объектов в RaphaelJS Fatalityap Библиотеки/Тулкиты/Фреймворки 3 03.08.2012 16:33
как найти нужный объект? `p r o x y jQuery 2 05.05.2009 01:12
Как передать элемент в функцию после createElement Oleg NT Общие вопросы Javascript 3 23.06.2008 02:11