Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Компактно переписать функцию (https://javascript.ru/forum/misc/67753-kompaktno-perepisat-funkciyu.html)

рони 06.03.2017 21:35

laimas,
Цитата:

Осуществляет поиск всех предков выбранных элементов, то есть, не только прямых родителей, но и прародителей, прапрародителей и так далее, до начало дерева DOM. Метод имеет один вариант использования:


.parents([selector]):jQueryv:1.0


Возвращает всех предков выбранных элементов. При необходимости, можно указать селектор selector для фильтрации результата.

рони 06.03.2017 21:38

laimas,
parents идёт по дереву вверх (запоминая нужное), parentsUntil идёт по дереву вверх до первого ограничителя сколько бы их небыло (запоминая всех)

laimas 06.03.2017 22:14

Цитата:

Сообщение от рони
При необходимости, можно указать селектор selector для фильтрации

А тем более если речь идет об уникальных значениях. То есть при ID, зная, что найдены все указанные, искать далее просто глупо, имеется ввиду если такое поведение заложено в скрипт. Уникальность, это же не прерогатива DOM и JS, это используется везде, и даже трудно представить, чтобы например запрос в базу продолжал бы искать далее после того, как нашел конкретно указанную запись. Это не только глупо, но и слишком расточительно.

Надо исходник JQ посмотреть по данному поводу, что-то мне не верится, чтобы такая глупость была заложена в метод. :)

рони 06.03.2017 22:19

laimas,
не вижу никакой глупости

laimas 06.03.2017 22:35

Цитата:

Сообщение от рони
не вижу никакой глупости

Тогда я не понимаю. :)

Ну как это понимать, если есть набор 1, 2, 3, и зная, что каждое значение набора уникально, заказав найти 2, найдя его вторым, проверять еще и 3?

На стороне сервера "чувствительная" область, это база, и если запрос нашел по уникальному значению, то далее он искать не будет. Это разумно, иначе любой сервер ляжет только от одних запросов.

На стороне клиента продолжать поиск, найдя элемент по уникальному значению, также большая расточительность ресурсов. Поэтому и существуют понятие уникальность, и я сомневаюсь, что здесь

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script> 
$(function() {
    $('input').change(function() {
        alert(this.checked ? $('.as').text() : $('#a1').text())
    })
});
</script> 
</head>
<body>
<p id="a1" class="as">1</p>
<p id="a2" class="as">2</p>
<p id="a3" class="as">3</p>
<input type="checkbox" />
</body>
</html>


при поиске по ID опрашивает также и '#a2', и '#a3', фильтруя полученное в для выбора нужного, а не прекращает поиск после найденного '#a1'. Также поступит и браузер, смысла то ведь нет, он то знает, что ID есть значение уникальное и он его уже нашел.

Именно исходя из уникально/не уникально, поиск по классу лучше конкретизировать, чтобы не расточать зря ресурсы - не .as, а p.as.

В противном случае я буду разочарован и глупым поведением браузера, и его подспорьем - Javascript. :)

рони 06.03.2017 22:42

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

laimas 06.03.2017 22:46

Цитата:

Сообщение от рони
я пас, не понимаю ход твоих мыслей

Да что тут понимать :lol:

Обязали найти в подъезде 2, на втором этаже, среди 4-х квартир, жильца Петрова. Знаем, что таковую фамилию в данной дислокации имеет только один человек, найдя его, нужно продолжать его искать?

Если да, то какой в этом смысл? :)

ksa 07.03.2017 08:33

Цитата:

Сообщение от laimas
Но имя класса для браузера не является уникальным значением

Под уникальностью тут имел ввиду, что такой класс будет только у трех этих элементов. Т.е. уникален среди других классов...

laimas 07.03.2017 08:40

Цитата:

Сообщение от ksa
такой класс будет только у трех этих элементов. Т.е. уникален среди других классов...

Уже разобрались, что имелось ввиду, но браузеру в общем то на это плевать, у него свои интересы. )

ksa 07.03.2017 08:46

Цитата:

Сообщение от laimas
но браузеру в общем то на это плевать, у него свои интересы. )

Так он на нашей стороне? :blink:


Часовой пояс GMT +3, время: 16:13.