Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   на что навешать обработчик события (https://javascript.ru/forum/misc/29942-na-chto-naveshat-obrabotchik-sobytiya.html)

Deff 19.07.2012 10:38

leko,
<a onclick="B_Funck()" >Тут что то</a>
Ни наю - что Вы пропустите Изменив функцию - ведь тег не измениться
Проще имхо дописывать в тег ссылку на функцию, нежели атрибут

bes 19.07.2012 10:44

Цитата:

Сообщение от leko
Сообщение от melky
а ещё лучше - вешать делегировщика (делегатора, обработчика событий для делегирования, короче ) событий прямо в боди.
может я туплю, но не понял что имеется в виду

События всплывают, поэтому можно обрабатывать их на родителе, а не на самих элементах

leko 19.07.2012 11:37

Цитата:

Сообщение от Deff
Ни наю - что Вы пропустите Изменив функцию - ведь тег не измениться

<a class="favorites" onclick="B_Funck()" >Тут что то</a> // таких строк в проекте встречается 20, 50, 100 раз
vs
$('.favorites').click(B_Funck)
надо поменять функцию, и что будем делать в первом варианте?
Цитата:

Сообщение от bes
События всплывают, поэтому можно обрабатывать их на родителе, а не на самих элементах

спасибо, теперь понял

bes 19.07.2012 11:43

Цитата:

Сообщение от leko
надо поменять функцию, и что будем делать в первом варианте?

Для таких случаев и вешают обработчик на родителя, если мало, можно и в атрибут

Deff 19.07.2012 11:47

Цитата:

Сообщение от leko
vs
$('.favorites').click(B_Funck)

Функция будет тогда выглядеть не так - а так:
function B_Funck (){
Тут и меняете , что захотите

}

Пример
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>

<a class="favorites" onclick="return B_Funck(this)" >Тут что то(Клик)</a>
<script type="text/javascript">
function B_Funck (a){
  alert($(a).text());
  return false;
}
</script>

Поменяли
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>


<a class="favorites" onclick="return B_Funck(this)" >Тут что то(Клик)</a>
<script type="text/javascript">
function B_Funck (a){
  $(a).css({'color':'red'})
  return false;
}
</script>


Eще поменяли
<a class="favorites" href="" onclick="return B_Funck(this)" >Тут что то(Клик)</a>
<script type="text/javascript">
function B_Funck (a){
  //this.href='http://javascript.ru/forum/misc/29942-na-chto-naveshat-obrabotchik-sobytiya-2.html#post189855';
  window.open('http://javascript.ru/forum/misc/29942-na-chto-naveshat-obrabotchik-sobytiya-2.html#post189855');
  return true;
}
</script>

bes 19.07.2012 12:14

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

Deff 19.07.2012 12:16

bes,
Вопрос номер 1:
Это, - где ТС собрался прописывать атрибуты - если на серве (Судя по предыдущим замечаниям) то прописать атрибут или обработчик в теге - однофигственно, но последующих забот - с функцией меньше

bes 19.07.2012 12:39

Цитата:

Сообщение от Deff
bes,
Вопрос номер 1:
Это где он собрался прописывать атрибуты - если на серве (Судя по предыдущим замечаниям) то прописать атрибут или обработчик в теге - однофигственно, но последующих забот - с функцией меньше

Я к тому, что используя делегирование их можно вообще не писать.
PS: начинает доходить вся польза от обработчиков на body: смотришь на элемент (его класс или id), смотришь на обработчики на body, находишь этот элемент в обработчиках, понимаешь, что он делает.

Deff 19.07.2012 13:14

Цитата:

Сообщение от bes
Я к тому, что используя делегирование их можно вообще не писать.

С одной стороны полностью согласен, с другой - часто удобно смотря на элемент в исходнике страницы понимать чем он обрабатывается (Хотя бы по классу

bes 19.07.2012 13:20

Цитата:

Сообщение от Deff
С одной стороны полностью согласен, с другой - часто удобно смотря на элемент в исходнике страницы понимать чем он обрабатывается (Хотя бы по классу

При обработке на body как раз класс или id нужен, только искать уже теперь придётся не по всему коду, а только в обработчиках body


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