Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Выборку на JQuery переделать >>> Javascript (https://javascript.ru/forum/misc/45871-vyborku-na-jquery-peredelat-javascript.html)

nattt 19.03.2014 04:11

Выборку на JQuery переделать >>> Javascript
 
Привет!

На странице есть ссылки вида:
<a href="" onclick="return hs.expand(this)" >
На JQuery выборку по onclick="return hs.expand(this)" можно сделать так:
var temp = $('a[onclick="return hs.expand(this)"]');
Как сделать подобную выборку на Javascript?

Спасибо!

jsnb 19.03.2014 04:27

Либо так:
var links = document.querySelectorAll('a[onclick="return hs.expand(this)"]');

Либо перебором:
var allLinks = document.getElementsByTagName('a');
var links = [];
for (var i = 0; i < allLinks.length; i++) {
  if (allLinks[i].getAttribute('onclick') === 'return hs.expand(this)') links.push(allLinks[i]);
}

nattt 19.03.2014 04:50

Спасибо!

Есть функция, которая добавляет .CSS-свойство cursor при наведении на ссылку, вот она:
addRule('a', 'cursor: url(' + hs.graphicsDir + hs.expandCursor + '), pointer !important;');

Но мне нужно, чтобы не всем ссылкам добавляла, а только тем, у которых есть onclick="return hs.expand(this)".
Если использовать предложенный вариант:
var links = document.querySelectorAll('a[onclick="return hs.expand(this)"]');
addRule(links, 'cursor: url(' + hs.graphicsDir + hs.expandCursor + '), pointer !important;');

То скрипт перестает работать.

jsnb 19.03.2014 05:18

Так насколько я понимаю в addRule - первый аргумент-строка и есть CSS селектор. Пробовали что-нить типо такого:
addRule('a[onclick="return hs.expand(this)"]', 'cursor: url(' + hs.graphicsDir + hs.expandCursor + '), pointer !important;');

danik.js 19.03.2014 05:23

nattt, чем-то ты странным занимаешься. Добавь ссылке нужный класс и все проблемы исчезают. Или ты не имеешь возможности поправить HTML?

nattt 19.03.2014 05:37

Цитата:

Сообщение от jsnb (Сообщение 303157)
Так насколько я понимаю в addRule - первый аргумент-строка и есть CSS селектор. Пробовали что-нить типо такого:
addRule('a[onclick="return hs.expand(this)"]', 'cursor: url(' + hs.graphicsDir + hs.expandCursor + '), pointer !important;');

СПАСИБО! Работает!
Цитата:

Сообщение от danik.js (Сообщение 303159)
nattt, чем-то ты странным занимаешься. Добавь ссылке нужный класс и все проблемы исчезают. Или ты не имеешь возможности поправить HTML?

Да, слишком много страниц придется править.

danik.js 19.03.2014 07:05

Цитата:

Сообщение от nattt
Да, слишком много страниц придется править.

Я то думал есть какая-то серьезная причина ))
Поставь себе Notepad++ к примеру. В нем можно провести замену по всем файлам за раз.

danik.js 19.03.2014 07:08

Кстати, раз такие проблемы возникают, не задумывешься использовать для сайта какую-нибудь CMS'ку, с шаблонизацией, чтобы весь код был в одном шаблоне, а не продублирован в куче файлов?

nattt 19.03.2014 14:05

danik.js, у меня CMS. Я имела в виду править не просто страницы, а страницы сайта, данные из которых находятся в БД =)
Пользуюсь Notepad++ уже очень давно (хорошая вещь).

BallsShaped 19.03.2014 15:18

Цитата:

Сообщение от nattt
Да, слишком много страниц придется править.

:lol: Я называю это синдромом "Хуже уже не станет". Когда проект обрастает тонной стрёмного кода, уже ничего нельзя трогать, потому что тронешь - обязательно сломаешь что-нибудь (причём в самом неожиданном месте). Тогда новые фичи добавляются сбоку, самыми странными способами, потому что пофиг уже, но это делает ситуацию ещё хуже. Ичсх, "хуже уже не станет" закономерно приводит к "пизда проекту".


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