#jquery #jquery-selectors
#jquery #jquery-селекторы
Вопрос:
У меня выдался какой-то неважный день, и я пытаюсь придумать способ уменьшить это, но все, что я пробовал, не сработало. Я знаю, что должен быть лучший способ сделать это, поэтому я решил спросить здесь.
Любые советы по кэшированию jQuery тоже были бы хороши (я пытаюсь сделать как можно меньше около 225 строк jQuery, чтобы все могло помочь!
$(".tableMap td:nth-child(1)").attr("style","border-right:1px solid black; border-bottom:1px solid black;");
$(".tableMap td:nth-child(2)").css("text-align","center").attr("style","border-right:1px solid black; border-bottom:1px solid black;");
$(".tableMap td:nth-child(3)").attr("style","border-right:1px solid black; border-bottom:1px solid black;");
$(".tableMap td:nth-child(4)").attr("style","border-right:1px solid black; border-bottom:1px solid black;");
$(".tableMap td:nth-child(5)").attr("style","border-right:1px solid black; border-bottom:1px solid black;");
$(".tableMap td:nth-child(6)").attr("style","border-right:1px solid black; border-bottom:1px solid black;");
$(".tableMap td:nth-child(7)").attr("style","border-right:1px solid black; border-bottom:1px solid black;");
$(".tableMap td:nth-child(8)").attr("style","border-right:1px solid black; border-bottom:1px solid black;");
$(".tableMap td:nth-child(9)").css("text-align","center").attr("style","border-bottom:1px solid black;");
Извините за мой ужасный код, не стесняйтесь давать мне любые советы, которые вы можете придумать!
Джефф
Комментарии:
1. какого результата вы ожидаете, также я бы использовал .css, а не .attr для всех itmes
2. В основном 1, 3-8 одинаковы. 2 и 9 отличаются. Итак, я хочу в основном сделать из них 2 инструкции, в которых они охватывают диапазон n-го дочернего элемента для них (если это возможно). Я не знаю, как создавать диапазоны n-го дочернего элемента, поэтому мне пришлось сделать 9 инструкций. Я знаю, что должен быть лучший способ, который просто не приходит мне в голову.
Ответ №1:
Просто примените класс CSS со своими стилями границ ко всем ячейкам (для этого jquery вообще не нужен):
<style>
.tableMap td
{
border: 1px solid black;
border-left: none;
border-top: none;
}
</style>
Затем, впоследствии, вы можете применить свои специфические стили только к двум необходимым элементам:
$(".tableMap td:nth-child(2)").css("text-align","center");
$(".tableMap td:nth-child(9)").css("text-align","center").attr("style","border-right:none;");
Хорошо бы помнить, что следует использовать javascript / jQuery только тогда, когда вам это нужно. Используйте прямой HTML / CSS всякий раз, когда можете, так ваш сайт будет работать намного лучше.
Ответ №2:
непроверенный — но я думаю, вы понимаете, к чему я клоню…
$(".tableMap td:nth-child(1)").attr("style","border-right:1px solid black; border-bottom:1px solid black;");
$(".tableMap td").children().lt(9).gt(1).attr("style","border-right:1px solid black; border-bottom:1px solid black;");
$(".tableMap td:nth-child(9)").css("text-align","center").attr("style","border-bottom:1px solid black;");
Ответ №3:
похоже, что если вы сделаете
$(".tableMap td").attr("style","border-right:1px solid black; border-bottom:1px solid black;");
затем
$(".tableMap td:nth-child(2),.tableMap td:last").css("text-align","center");
это было бы намного проще