-
-
Save amiskov/c35a5d4d91e0108f076c0b359a189f48 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<ul class="products js-products"> | |
<li class="product"> | |
<img src="trousers.jpg" alt="" class="product__img"> | |
<button class="product__buy" data-price="120">Купить</button> | |
</li> | |
</ul> | |
<script> | |
$('.js-products').on('click', '.product__buy', function(event) { // .product__buy или .js-product-buy? | |
// Нужно ли давать класс с префиксом `js-` кнопке, если обработчик | |
// навешивается на li? Или обращаться к ней по .product__buy? | |
var price = $(this).data('price'); | |
buyProduct(price); // функционал покупки | |
}); | |
</script> |
Еще про айдишники надо подумать... Просто если у элемента стоит id
, точно не ясно, используется ли он в js или это на нем якорь навешен или просто так он там стоит. А с классом js-class-name
все понятно — используется в js.
Для поддержки, можем договориться ставить рядом с id (который используется в js) класс .js-use-id
или что-то в этом роде
Нужно ли добавлять префикс js-
для темплейтов? Например:
<script id="someTemplate" type="text/x-jsrender">
{{if name}}<p class="nearest-salon-popup__name">{{:name}}</p> {{/if}}
</script>
Он используется в JS, но это мета-информация. Никаких обработчиков нет.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@anastasiast @shabanovtg, вы пишете, что:
Однако по факту при делегировании событий обработчик навешивается только на родителя, а кнопка выбирается логически, по
event.target
. То есть JS-ом кнопка не обрабатывается, JS за ней следит по классу.Но нельзя не согласиться с тем, что при поддержке, когда есть префикс на кнопке, сразу становится понятно, что этот класс присутствует в js-файле. Именно, что он там есть и менять его не стоит, а не то, что на нем навешен обработчик.
Короче, я согласен с тем, что нужно ставить префикс на все классы, которые фигурируют в js-файлах, а не только на те, на которые навшиваются обработчики. Получается, что вопрос был именно в формулировке.
В итоге получим:
Такую формулировку я предлагаю и закрепить в качестве стандарта. Все правильно?