Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Конфликт скриптов (https://javascript.ru/forum/jquery/52260-konflikt-skriptov.html)

Unnamed75 10.12.2014 16:01

Конфликт скриптов
 
Как исправить конфликт двух скриптов?
jQuery(document).ready(function($) {
		var url=document.location.href;
		$.each($(".header-menu a"),function(){
		if(this.href==url){$(this).addClass('menu-active');};
		});
})(jQuery);


Хочу продублировать этот скрипт, пишу вот так:
jQuery(document).ready(function($) {
		var link=document.location.href;
		$.each($(".sushi a"),function(){
		if(this.href==link){$(this).addClass('sushi-active');};
		});
})(jQuery);

Но он почему то не работает, где я допустил ошибку?

danik.js 10.12.2014 16:21

$.each($(".header-menu a, .sushi a") ...


Класс будет назначаться одинаковый, но это не проблема вовсе.

Vlasenko Fedor 10.12.2014 19:44

Цитата:

Сообщение от danik.js
$.each($(".header-menu a, .sushi a") ...

$("a[href='" + document.location.href + "']").addClass('sushi-active');

Зачем выбирать, а затем в цикле перебирать.
Может стоить сразу выбрать нужные

danik.js 11.12.2014 06:39

Poznakomlus, это не тоже самое. Как правило, такой подход не будет работать.

Vlasenko Fedor 11.12.2014 11:54

Цитата:

Сообщение от danik.js
Как правило

Какое правило? Поясни
Вообще выборки типа
$('.cls')
- считаются не оптимизированными. Так пишут те, кто не понимает как происходит поиск по коллекции DOM элементов. Правильнее задавать хотя-бы элемент среди которых производиться поиск. К примеру
$('li.cls')

Работа с ссылками здесь вообще, отдельная история. Не стоит забывать что массив всех ссылок есть уже в
document.links

danik.js 11.12.2014 12:24

Начнем с того что задача подсветки активных пунктов решается на уровне CMS. Даже зассанная джумла это умеет делать. Автор видимо либо юзает херню какую-то, а не CMS, либо не в курсе как сконфигурировать.
Цитата:

Сообщение от Poznakomlus
Какое правило? Поясни

Все просто. location.href - абсолютный урл, включающий схему.
А в атрибут href как правило пишут относительный урл:

<a href="/">Home</a>
<a href="/about">About</a>


А вот свойство href уже содержит нормализованный абсолютный урл, с которым можно сравнивать location.href.
Хотя может jQuery это обыгрывает (надеюсь что нет - итак делает дохрена чего не просят).
Цитата:

Сообщение от Poznakomlus
считаются не оптимизированными

Кем? Тобой? Ссылку плиз. Погонял в хроме - вариант без тега работает в два раза быстрей. В любом случае на разницу можно только дрочить. Тут другое:
Цитата:

Сообщение от Poznakomlus
Так пишут те, кто не понимает как происходит поиск по коллекции DOM элементов

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

danik.js 11.12.2014 12:25

Poznakomlus, ты меня огорчаешь :-?

Vlasenko Fedor 11.12.2014 13:02

Цитата:

Сообщение от danik.js
Все просто. location.href - абсолютный урл, включающий схему.
А в атрибут href как правило пишут относительный урл:

Какое это отношение имеет к вопросу Т. С.
Если у него линк var url=document.location.href; и его так устраивает
Цитата:

Сообщение от danik.js
Кем? Тобой?

тут и смотреть не надо, видно количество проведенных итераций при разных подходах
Про скорость здесь комментировать не буду.
Цитата:

Сообщение от danik.js
привязываться к тегам - плохо

Не видишь здесь паранои в области привязки
$('li.cls')

и
$('.cls')

с каких делов ты li будешь менять? какие затраты будут на замену? насколько информативно $('li.cls') и $('.cls')?
что будет если добавят класс в элементе котором не надо обрабатывать. Таких причин и условий может быть ...

рони 11.12.2014 13:10

:write:
if(url.indexOf(this.href)!=-1){}

danik.js 11.12.2014 13:16

Цитата:

Сообщение от Poznakomlus
Какое это отношение имеет к вопросу Т. С.

Наверное такое что твой код попросту не будет работать? И он вообще почти ни на одном сайте не будет работать. Или ты не считаешь это проблемой? :dance:
Цитата:

Сообщение от Poznakomlus
тут и смотреть не надо, видно количество проведенных итераций при разных подходах

Где видно? Куда смотреть? Как при большем числе итераций код отрабатывает быстрей?
Цитата:

Сообщение от Poznakomlus
Про скорость здесь комментировать не буду.

Какой ты загадочный. Ну раз начал гнуть свою линию, давай продолжай.

Или я правильно понимаю, что нужно использовать только такие селекторы, которые "считаются оптимизированными", даже если они работают медленней и менее практичны? :D

Твои доводы по li неубедительны и не подтверждаются в реальных проектах. Зайди на гитхаб и посмотри код популярных js-скриптов.


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