Jump to content
  • 0

Пара обработчиков


alexandr_v-vich
 Share

Question

Доброго вам дня!

Затеял я на страничке анимацию. Да так, что в два скрипта. Но вот незадача, один описывает общий случай, а другой частный.

Подключены они отдельно. Т.е. в конце странице это

<script type="text/javascript" src="animationEverywhere.js"></script>
<script type="text/javascript" src="animationSpecial.js"></script>

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

Элементы эти - это ссылки со href`ом = "".

Теперь, наверное, самое важное.

Оба скрипта - это, в большем своём виде (и значении), обработчики клика. На обоих обработчиках стоит preventDefault и функция с анимацией.

Пытался я крутить с этим preventDefault - что-то не вышло. Через return false пытался я, но всё также - ничего...

Поможете? (Только без jQuery)

Edited by alexandr_v-vich
Link to comment
Share on other sites

16 answers to this question

Recommended Posts

  • 0

Да если б мог, скинул бы....не, не то чтоб физически не могу....ну, не буду, много там всего и взаимосвязано, а сократить до нужного - это долго.

Я, вот, в теоретическом плане. Как совместить два обработчика клика, подключённые через разные скрипты, чтобы работали, ну вот, как в начале описывал. Дорогу, хотя бы, покажите. Даже, если через return false - какая там логика то должна быть?

Мысль у обоих скриптов такая


addEventListener("click", function(event) {
event.preventDefault();
//тут описание анимации либо функция на неё//
});

Edited by alexandr_v-vich
Link to comment
Share on other sites

  • 0

Только не JQuery. Я с ним не работаю.

Спасибо, что помогаете :)

И за пример, спасибо большое.

Понял, что нужно всё таки доводить до мысли и писать примеры. И ответ легче получить с самому проще будет понять проблему...

Link to comment
Share on other sites

  • 0

Вот типа чего-то такого http://jsfiddle.net/L5EHy/13/

Первый обработчик - общий

Второй - частный

И ответ легче получить с самому проще будет понять проблему...

И действительно, правильный вопрос и есть ответ)

http://jsfiddle.net/L5EHy/26/

Edited by alexandr_v-vich
Link to comment
Share on other sites

  • 0

Почему бы не объединить 2 обработчика в один? Проверка на номер id - не айс с точки зрения следующей поддержки (добавление элементов)

В одном обработчике делаете проверку на класс (например, так) или на значение какого-нить rel'а и дальше действия исходя из условия

И почему такая неприязнь к jQuery?

Edited by br3t
Link to comment
Share on other sites

  • 0

Почему бы не объединить 2 обработчика в один? Проверка на номер id - не айс с точки зрения следующей поддержки (добавление элементов)

В одном обработчике делаете проверку на класс (например, так) или на значение какого-нить rel'а и дальше действия исходя из условия

И почему такая неприязнь к jQuery?

Почему не объеденить? - да непочему)), решив вопрос, уже понял, что, конечно, объединю. Добавление элементов там не будет, и там не совсем id будет. Это ведь я в пример выдал просто.

В jQuery не вижу смысла.

Edited by alexandr_v-vich
Link to comment
Share on other sites

  • 0

br3t, вообще

А зря. Ни холивара ради, но по-моему штуки типа:

$('#foo, .bar .baz, div.qux').slideToggle();

очень прикольно делать на нём. Высосано из пальца, конечно, но вполне себе имеет место быть. На pure JS это потребует несколько больших усилий.

Link to comment
Share on other sites

  • 0

Great Rash, да в кроссбраузерный я сам переделаю, если что...кстати хорошо, что вы написали - проблема там осталась ещё.

Так то, он будет не ниже IE9 использоваться. Есть предложения?

Link to comment
Share on other sites

  • 0

Ну, задача то решена уже. И использовал один обработчик (или не один.... :blink: ).

В общем вопрос теоретический. Если у меня один крипт с одним обработчиком подключается на 20 страниц. И всего на одну нужен ещё один обработчик. И если эти обработчики сложные. - Стоит ли мне вписывать второй (который необходим всего для одного случая) в первый (общий) или, что гораздо проще и разумнее, можно его подключить отдельным скриптом? Ну и чтобы, конечно, выполнялись условия из первого сообщения ?up? (не мешали друг другу).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy