Как вы сказали, идентификатор - это более быстрый поиск, но тот, который вы выбрали, больше связан с тем, что вы хотите.
Думайте о классе как о категории или о классификации для различных элементов, которые имеют общий или общий для них аспект, в то время как идентификатор, напротив, обладает неким уникальным свойством - он единственный в своем роде. Если бы мы имели дело с денежными значениями, есть много отдельных цифр, некоторые промежуточные итоги и только одна общая сумма. Возможно, вы захотите использовать класс .figure для форматирования стиля всех отдельных фигур, класс .subtotal для каждого промежуточного итога, чтобы вы могли по-разному их стилизовать, и вы могли бы присвоить идентификатор итоговому значению, поскольку вы хотите, чтобы он имел уникальный стиль, и будет только один.
Если бы вы динамически хотели найти все значения и преобразовать их в другую валюту, было бы просто найти все значения и написать код для их одновременного преобразования, было бы тривиально, в то время как запись кода в найти каждое число по идентификатору было бы в лучшем случае утомительно и запутанно.
Итак, это действительно зависит от того, что вы пытаетесь сделать. Если вы хотите найти один и только один элемент, идентификатор будет намного быстрее, но если у всех элементов есть что-то общее, то, безусловно, проще (и, возможно, быстрее) вместо этого ссылаться на них по классам. Мне было бы любопытно увидеть результаты теста, сравнивающие эти ...
Код для обновления всех значений при нажатии кнопки конвертации после ввода коэффициента конверсии:
$('#convertBtn').on('click', function () {
var factor = $('#convRatio').val();
var $err = $('#errorPanel');// only create once to save resources
if (factor) {
// remove any error condition
if ($err.text()) {
$err.text("");
}
// get an array-like object of all the values
var $vals = $('#total, .subtotal, .figures');
$vals.each(function () {
var $th = $(this);// only create once to save resources
var val = $th.text();
$th.text(val * factor);
});
} else {
$err.text("Please enter a conversion rate");
}
});
Код для выделения только промежуточных итогов при нажатии на один из них:
var $subs = $('.subtotals');
$subs.on('click', function () {
var $sub = $(this);// only create once to save resources
if ($sub.hasClass('hilite')) {
$sub.addClass('hilite');
} else {
$sub.removeClass('hilite');
}
}
Код для выделения только суммы при нажатии:
var $tot = $('#total');// only create once to save resources
// toggle highlighting on and off when any subtitle is clicked
$tot.on('click', function () {
if ($tot.hasClass('hilite')) {
$tot.addClass('hilite');
} else {
$tot.removeClass('hilite');
}
}