За последние 24 часа нас посетили 20414 программистов и 1092 робота. Сейчас ищут 845 программистов ...

Фрилансер - кидала

Тема в разделе "PHP Free-Lance", создана пользователем Selltrades, 4 фев 2017.

  1. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    Такой подход почему-то работает в css. А вот js с этим работать отказывается.

    И вообще, спорить с тем, что "лучше сделать правильно, чем не правильно" - как то глупо.
     
  2. Amperandus

    Amperandus Активный пользователь

    С нами с:
    13 мар 2009
    Сообщения:
    226
    Симпатии:
    11
    не спорю. просто читая этот топик я вспомнил историю о том, что Вася наговнокодил, продал и ездит на крузаке, а Петя продолжает вылизывать код и ест доширак (утрированно).

    не совсем понял - можно подробнее.
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Это видимо была статья про создание прототипа или MVP
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Одинаково. Под капотом это одна и та же функция. Более того, поиска по дата-тэгам как такового нет. Это универсальный querySelector. С его помощью можно искать вообще что угодно и как угодно. По классам, по id, по дататегам, по именам, по самим тэгам, по любой комбинации вышеперечисленного, в том числе используя регулярочки в качестве шаблона поиска. Эта функция - нереально мощная нативная реализация жикверного $(). И работающая в разы быстрее, потому что native code. Я вообще, в последнее время только ей и пользуюсь. Эти вот гетбайкласснейм, гетбайнейм, гетбайайди - они сейчас существуют только для совместимости со старым кодом и, как таковые, уже давно не нужны.

    Это не слова. Это правила. Согласно спецификации HTML, в том числе HTML5, идентификатор, он же id, должен идентифицировать конкретный объект. Так, к примеру, в том же JS есть функции для выборки по класснеймам, по неймам, по тегам, и они могут возвращать массивы. Выборка по id возвращает только один элемент.

    id - это не просто параметр. Объект, имеющий id, регистрируется как свойство объекта window, прописываясь в глобальном пространстве имен. Так, на самом деле вовсе не обязательно делать выборку по id, чтобы потом ипользовать объект. Можно просто сразу обращаться к объекту по имени идентификатора как по имени переменной: https://jsfiddle.net/u5crufne/

    Обрати внимание, в коде идет работа с кнопкой, но нигде нет ее запроса из DOM. Это не вопрос кошерности и не кошерности, или принципов сообщества или суеверий. Это вопрос соблюдения спецификаций языка разметки, которым пользуешься.
     
    askanim и mahmuzar нравится это.
  5. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Плюсую, когда надо работать с большим DOM деревом, querySelector превосходит всё.
     
  6. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    ИМХО это чушь. Хороший спец всегда ценится выше.
    js не будет работать с двумя элементами с одинаковыми id.
     
  7. Amperandus

    Amperandus Активный пользователь

    С нами с:
    13 мар 2009
    Сообщения:
    226
    Симпатии:
    11
    Код (Javascript):
    1. $(document).on('click','a#a',function(e) {
    2.         $("#info,#error").stop().hide();
    3.         e.preventDefault();
    4.         $.ajax({
    5.                 type:'get',
    6.                 url: $(this).prop('href'),
    7.             }
    8.         ).done(function (data) {
    9.             ajaxReturn(data);
    10.         }).fail(function() {
    11.             errPrint('Произошла ошибка. Пожалуйста, подождите какое-то время и попробуйте обновить страницу. Если ошибка повторится, обратитесь к администратору.')
    12.         });
    13.     });
    --- Добавлено ---
    хм.. я читал несколько иное, но сам в вопросе разбираюсь не сильно. Точнее функция мб и одна, но по id идет именно native js, а все остальное уже обрабатывается большим количеством кода.

    И да, это не правила, а не более чем соглашения. Правила это устав несения гарнизонной и караульной служб, а тут нарушается вокруг и всеми и при этом работает. Вопрос я конечно проработаю, но объективных причин на изменения в коде пока не вижу.
     
    #82 Amperandus, 7 апр 2017
    Последнее редактирование: 7 апр 2017
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
  9. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Для чего этот код выше пока не понял:D
    @Amperandus, зачем придерживаться неправильного подхода? Сказано же в документации, id = один html-элемент.
     
  10. Amperandus

    Amperandus Активный пользователь

    С нами с:
    13 мар 2009
    Сообщения:
    226
    Симпатии:
    11
    просто конкретно в моем случае и для моих целей множественный одинаковый id работает. именно для этого код выше и показан
     
  11. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @Amperandus, конкретно где?
     
  12. Amperandus

    Amperandus Активный пользователь

    С нами с:
    13 мар 2009
    Сообщения:
    226
    Симпатии:
    11
    выше :)

    Код (Javascript):
    1. $(document).on('click','a#a',function(e) {
    а разговор начался с того, что на странице несколько ссылок с id="a"
     
  13. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    Я человеку объясняю, что CSS почему то работает с двумя элементами с одинаковыми айди. А js отказывается.

    Филя выше дал ссылку на свой скрипт в качестве примера.

    А я скопировал html строку, чтобы показать, что если элемента будет два, то js работать не будет.
     
  14. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    'a#a' я не проверял твой код у себя, но если рассуждать то это значит что ссылка с id='a' т.е. a#a
    Это что-то подобное
    HTML:
    1. div.div{}
    2.  
    3. <div class'div'>
    4. </div>
    --- Добавлено ---
    Эт я понял, я на это намекал, его функция как бы не показывает что он одновременно назначил обработчик двум элементам с одинаковым id
     
  15. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    native code это не native js. Я имел ввиду, что эти все функции - скомпилированные, являющиеся частью JS-движка а не реализованные на JS. И по умолчанию работают очень быстро. Логика выборки по дереву с проверкой заданных параметров одинаковая для каждой из них.
    Ох бл...
    Тебе русским языком сказано: спецификация HTML запрещает использовать один id для нескольких элементов. Это не блажь. Это не на словах. То, что ты делаешь вид, что это не так, ничего не меняет. Повторяю. Спецификация HTML запрещает использовать один id для нескольких элементов. То, что тебя старшина не отпиздит за дублирование ID еще не значит, что это не правило. Есть вот, правила русского языка. Их тоже можно нарушать. Тогда они не правила вовсе, а договоренности?

    Валидатор ругается на это не просто так. То, что браузеры, насколько возможно, терпят такие вещи, как и битую разметку, не значит, что можно пороть такую хрень. Это не от хорошей жизни такая фигня. Это потому, что среднестатистический верстальщик настолько необразован и безолаберен, что производителям браузеров проще пытаться исправлять за них ошибки, чем не отображать ничего вообще. Погугли на тему "драконовская обработка ошибок браузерами", когда был эксперимент со строгим соблюдением спецификаций. Уровень образованности верстальщиков не поднялся. А вот чуть ли не половина интернета перестала нормально отображаться.
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    если будет несколько элементов с одинаковым id, то браузер волен поступать как ему хочется, и это не всегда можно прогнозировать. И поведение может поменяться от версии к версии. Если стоит задача весело ловить баги и мучать юзеров - то флаг в жопу.
     
  17. Amperandus

    Amperandus Активный пользователь

    С нами с:
    13 мар 2009
    Сообщения:
    226
    Симпатии:
    11
    вот первое дельное замечание кроме каких то мифических соглашений от не менее мифических организаций :)

    http://www.cmsmagazine.ru/library/i...ur-script-jquery-to-67percent-more-efficient/ тут про скорость селекторов. хотя я не знаю насколько эта статья актуальна сейчас

    какое отношение верстальщики к js имеют?
     
  18. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Потому что на JS также манипулируют и вёрсткой. По этому верстальщик должен делать всё эффективнее если вёрсткой потом будут манипулировать на JS
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    так нет соглашения - нет и определённости. А нет определённости - бяда.
    --- Добавлено ---
    ну "верстальщик" он как "вебадмин" - что-то специфичекое и странное. А "фронтэндер" - он и верстать должен, и сам же со своей вёрсткой работать.
     
  20. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    [​IMG]
    Тебе привели даже пример, где при использовании одинаковых id ломается js-код. Или ты просто игнорируешь все, что не спопобен понять? Ну там не знаю, абзац длиннее двух предложений? Игорь сказал ровно то, что было сказано до этого. Но простенько.

    И да, это ты мифический. О тебе ничего неизвестно, кроме ника и айпишника. А вот W3C знают все образованные вебразрабы.
    --- Добавлено ---
    тут про jquery, а не про скорость селекторов. Про то, что для простых селекторов она использует встроенные гетБайЧто-то там, а для сложных - перебирает весь DOM поэлементно. Тебе же говорили про нативную querySelector.
     
  21. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Но, но, но. Я например не знаю, но оно мне и не надо. Может ты хотел сказать frontend девелоперы ?
     
  22. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Резонно. Просто в современных реалиях "чисто бэкенд девелопер" - это довольно редкое явление. Так или иначе Бэкендщик сегодня, скорее всего, умеет и в фронт хоть сколько-то. И тут, если он искал инфу или доки по фронту, на W3C не наткнуться он никак не мог. Это лишь вопрос времени. И да. Вот и у тебя это время пришло. Теперь ты тоже знаешь, кто заведует развитием этого вашего Интернета.

    И да, в общем-то W3C заведуют не только фронтом. Там же спецификации протоколов, к примеру. Всякие вебсокеты, https-ы, это вот все тоже от них исходит.
     
    denis01 нравится это.
  23. Amperandus

    Amperandus Активный пользователь

    С нами с:
    13 мар 2009
    Сообщения:
    226
    Симпатии:
    11
    вот думаю дальше попридуриваться или хватит? А то @Fell-x27 такой смешной оказывается.
     
  24. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Я просто исхожу из того, что клоуны - это где-то в цирке, а тут форум другого профиля.
     
    acho нравится это.
  25. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    сделай себе закладку в браузере на эту тему и почитай через годик другой практики.
    Возможно увидишь эту тему совсем в другом свете.
    Так настойчиво кривую верстку не продвигают даже в цирке.