Как найти щелкнутый элемент в коллекции
Или как вообще это делается?
Например берем с формы только то, что удовлетворяет некоторым условиям и собираем в коллекцию. 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 и все при нем, но не атрибутах. Или это нормально - валить в атрибуты? |
То есть если я сделаю (в каноничном синтаксисе)
elem.maxlength=(elem.hasAttribute('maxlength'))?parseInt(elem.getAttribute('maxlength'):null; оно точно останется null, а не "null", и 123, а не "123" применительно к девиациям браузеров? Кстати JQ идеологически выдержано возвращает по attr() не значение атрибута, а его имя если таковой имеется из тех самых типа boolean. ПравЕльные там поца все пишут. |
Нихера не понял. В чем проблема-то? В том, что код работает не так, как ты его задумал? Но для этого не достаточно просто "задумать" - браузер не читает мысли..
Цитата:
Цитата:
Цитата:
Что если какой-нибудь погромист вроде тебя напишет if ($el.attr('disabled')) ? Если честно вернуть пустую строку, то у него возникнет батхерт. Как у тебя сейчас. Для таких атрибутов важно не его значение, а факт наличия этого атрибута. Поэтому какая разница что в значении? Тем более, юзать надо prop() , а не attr() . |
Так юзал, он тупо возвращает true/false.
Не в этом дело, вопрос, вроде ясно изложил. Ну напихали вы элементов в коллекцию, то есть рядом с elem:elem лежат его проперти - елемент щелкнули - как их теперь достать? Короче, есть вот такой пердимонокль: http://www.html5rocks.com/en/tutoria...ustomelements/ однако с первой же картинки я задумалсО - а почему это гугль такую классную штуку не юзает, а городит лес из дивов? Да потому что это сука извращенное извращение XSL. Лишь бы блеать не развивать эту технологию, на все готовы, только бы не касаться XML. Ну ладно, вот вы лично как сделали бы? На форме куча элементов (объектов), у них свои атрибуты (которые превращаются в свойства) и как по щелчку найти объект в котором этот самый щелкнутый элемент? Не обязательно именно так - как вообще оно связывается? |
Ну то есть я беру данные из атрибутов, пусть так нельзя, я могу их отпостить сразу объектом с сервера в страницу и профтыкать туда елементы - ну х с того?
То есть пока на сам элемент не повесишь функцию - его придется искать по индексам, правильно? UPD, если и повесишь - те же яйца. Пока в атрибуты не профтыкаешь - придется искать. |
У тебя нестандартные атрибуты? Нахера ты парсишь maxlength? Это же стандартный атрибут, он мапится на свойство maxLength
|
<elem data-custom-attr="blabla"> <script> if (elem.dataset.customAttr == 'blabla') { .. } </script> |
Цитата:
А вот в XML имеется дилемма entity vs. attribute или попсово http://www.w3schools.com/dtd/dtd_el_vs_attr.asp <entity></enity> - сущность которая может быть чем угодно <entity attr="attribute"/> - глухая сущность с атрибутом |
В ES6 есть WeakMap()
Есть полифил, но хз насколько он "weak" var fields = new WeakMap(); fields.set(elem, {some: props}); .. var props = fields.get(event.target); |
Цитата:
Да блин какая разница, могу объектом отпостить с сервера - не в этом дело. Дело в том что связь между элементом и его свойствами разрывается если в него не профтыкать эти свойства атрибутами, блеать. В js-объекте лежит elem и куча пропертей - бестолковая хрень. В elem напихали атрибутов и запарсили - часть браузером, часть сами - нормально. Но что будет с той частью которую сами - она точно не сдохнет в каком-нить православном ИЕ? |
Часовой пояс GMT +3, время: 16:45. |