Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   вопрос по функциям (https://javascript.ru/forum/events/40857-vopros-po-funkciyam.html)

NeVirus 22.08.2013 09:41

вопрос по функциям
 
Доброго времени суток,

возник нубский вопрос...

в литературе вижу что "по правильному" будет такой вариант:
$(function(){
   $("#a").attr({
      "alt": "альтернатива",
      "title": "тайтл",
      "href": "http://lalala.ru"
   }).click(function(){
      alert($(this).attr("alt"));
      return false;
   });
});


но руки чешутся делать так:
$("#a").click(function() {
   $("#a").attr({
      "alt": "альтернатива",
      "title": "тайтл",
      "href": "http://lalala.ru"
   });
   alert($(this).attr("alt"));
   return false;
});


будет ли 2й вариант говнокодом и почему?

ОлегА 22.08.2013 09:56

NeVirus,
эти 2 записи у вас разные, они могу выполнять разные вещи, в 1-ом варианте вы задали событие ко всем элементам тэга <a> и он отработает сразу после загрузки страницы, кроме клика конечно, а во 2-ом вы задали событие только 1-му элементу с id this и он отработает только после события клик, как вам надо то?

NeVirus 22.08.2013 10:04

пардон, просто писал на скорую руку и чуть чуть ошибся... суть проста клик на что то с айдишником "а" вызывает замену его атрибутов. Меня интересует именно правильность формы ... 1й или 2й вариант лучше и почему

ОлегА 22.08.2013 10:51

NeVirus,
по мне так 2-ой только не так, а вот так

$("#a").click(function() {
   $(this).attr({
      "alt": "альтернатива",
      "title": "тайтл",
      "href": "http://lalala.ru"
   });
   alert($(this).attr("alt"));
   return false;
});

NeVirus 22.08.2013 11:12

ну, как я понимаю, "#a" равносильно "this" в моем примере (кликаем же по нему), так что это все равно...

мне тоже 2й вариант больше нравится, и раз с ним косяков нету, то так и буду делать значит.

спасибо

ruslan_mart 22.08.2013 12:30

Цитата:

Сообщение от ОлегА
NeVirus,
эти 2 записи у вас разные, они могу выполнять разные вещи, в 1-ом варианте вы задали событие ко всем элементам тэга <a> и он отработает сразу после загрузки страницы, кроме клика конечно, а во 2-ом вы задали событие только 1-му элементу с id this и он отработает только после события клик, как вам надо то?

Там задан не тэг a, а id="a". ID уникален, он может быть только один на странице. В первом варианте, атрибуты меняются при загрузки документа, а во втором - при клике на элемент. Лучше так:

$("#a").click({
   $(this).prop({
      alt: 'альтернатива',
      title: 'тайтл',
      href: 'http://lalala.ru'
   });
   alert(this.alt);
   return false;
});

ОлегА 22.08.2013 13:08

Ruslan_xDD,
это сейчас он так задан, потому что он исправил свою ошибку


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