Отступы и форматирование в цепочке методов jQuery с


Ниже у меня есть некоторые jQuery код, который обрабатывает сноски. Мой вопрос вообще-то про форматирование и отступы в коде, поэтому я не буду пытаться объяснить, что код делает сверх того.

Я хотел бы знать, какие модели отступы считаются наиболее ремонтопригодны и чтения при соединении с jQuery вызовы функций вида: $(ФОО).фу(бар).фу(функция(){ бар; }).фу(функция(){ бар; });

Вот мой конкретный код и форматирование/отступы, которые я придумал:

$('.footnote[id^="ret_"]')
  .removeAttr('title')
  .removeAttr('alt')
  .mouseenter(function(e) {
    var footnote = $('#footnote_cont_' + this.id.substring(4)).html();

    $footnoteTooltip.stop(true, false);
    //only completely hide and change text/position if we are hovering over a different footnote
    if($footnoteTooltip.html() != footnote)
      $footnoteTooltip.hide().html(footnote).css({ left: e.pageX + 10, top: e.pageY + 15});

    $footnoteTooltip.fadeTo(fadeTime, opacity);
  })
  .mouseleave(function() {
    $footnoteTooltip.delay(fadeTime).fadeOut(fadeTime);
  })
;

Есть более четкий способ выделить это?



5585
9
задан 18 апреля 2011 в 07:04 Источник Поделиться
Комментарии
3 ответа

Мое предложение:

$('.footnote[id^="ret_"]')
.removeAttr('title')
.removeAttr('alt')
.mouseenter(function(e) {
var footnote = $('#footnote_cont_' + this.id.substring(4)).html();
$footnoteTooltip.stop(true, false);

//only completely hide and change text/position if we are hovering over a different footnote
if($footnoteTooltip.html() != footnote)
$footnoteTooltip.hide().html(footnote).css({ left: e.pageX + 10, top: e.pageY + 15});

$footnoteTooltip.fadeTo(fadeTime, opacity);
}).mouseleave(function() {
$footnoteTooltip.delay(fadeTime).fadeOut(fadeTime);
});


  • Три или четыре пробела отступ - ваши предпочтения. Мое мнение, что два пробела труднее читать (хотя Лисп использует его).

  • Точка с запятой в той же строке, как и в прошлом методе. Единственный раз, когда я одобряю его собственной линии пустой при.

  • }).mouseLeave() я поставил звонок на той же строке в конце блока, чтобы заставить его понять, что вы вызываете метод объекта, возвращаемого.

7
ответ дан 18 апреля 2011 в 08:04 Источник Поделиться

Я лично найти "bind('событие') и Trigger('событие'), чтобы быть чище и они должны действовать быстрее, так вот, что же сделано за шторы.

Так это будет:

$('.footnote[id^="ret_"]')
.bind('mouseenter', function(e) {
// code
})
.bind('mouseleave', function(e) {
// code
});

Я также рекомендую не использовать $ в качестве префикса для библиотеки jQuery объекты http://www.bennadel.com/blog/1778-Using-Variable-In-jQuery-Code-Is-Just-Hungarian-Notation.htm. Я согласен с тем, что написано в этом блоге – вы не префикс массивы с arr_, логические с is_, цифры с "num_" и т. д. И если вы это сделаете – вы, пожалуй, не стоит :-)

3
ответ дан 21 апреля 2011 в 11:04 Источник Поделиться

Я согласен с большинством того, что Михаил к сказал. И я бы также сделать следующее:

$('.footnote[id^="ret_"]').removeAttr('title').removeAttr('alt').mouseenter(function(e) {
var footnote = $('#footnote_cont_' + this.id.substring(4)).html();
$footnoteTooltip.stop(true, false);

//only completely hide and change text/position if we are hovering over a different footnote
if($footnoteTooltip.html() != footnote) {
$footnoteTooltip.hide().html(footnote).css({ left: e.pageX + 10, top: e.pageY + 15});
}

$footnoteTooltip.fadeTo(fadeTime, opacity);
}).mouseleave(function() {
$footnoteTooltip.delay(fadeTime).fadeOut(fadeTime);
});


  • Лично я нахожу строки на скованные removeAttr и события мыши: mouseenter действительно прерывает поток метод, так что я бы удалить их.

  • Я бы еще добавил фигурные скобки { } после того, как в одной строке, если заявление (это больше предпочтения, так что я не укусила тонкие ошибки.)

  • А как Михаил К, Я бы выстраиваются }).mouseLeave() звонок по той же линии, на конце блока - однако на мое обращение в первую линию изменений, где выравнивание происходит.

2
ответ дан 19 апреля 2011 в 03:04 Источник Поделиться