#javascript #jquery #css
#язык JavaScript #jquery #CSS
Вопрос:
Я хотел бы динамически стилизовать каждый первый и последний элемент в строке с помощью css или js.
lt;div class"box"gt; lt;uigt; lt;li class"one"gt;lt;/ligt; lt;li class"two"gt;lt;/ligt; First lt;li class"two"gt;lt;/ligt; lt;li class"two"gt;lt;/ligt; lt;li class"two"gt;lt;/ligt; Last lt;li class"one"gt;lt;/ligt; First lt;li class"one"gt;lt;/ligt; lt;li class"one"gt;lt;/ligt; lt;li class"one"gt;lt;/ligt; lt;li class"one"gt;lt;/ligt; lt;li class"one"gt;lt;/ligt; lt;li class"one"gt;lt;/ligt; lt;li class"one"gt;lt;/ligt; Last lt;li class"two"gt;lt;/ligt; First lt;li class"two"gt;lt;/ligt; lt;li class"two"gt;lt;/ligt; lt;li class"two"gt;lt;/ligt; lt;li class"two"gt;lt;/ligt; lt;li class"two"gt;lt;/ligt; Last lt;/uigt;
.два:последний дочерний элемент выбирает только один и последний элемент в пользовательском интерфейсе, вместо нескольких в необработанной той же проблеме с .два:последний тип
Ответ №1:
Вот решение с кодом.
lt;!DOCTYPE HTMLgt; lt;HTMLgt; lt;headgt; lt;titlegt;Try jQuery Onlinelt;/titlegt; lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"gt;lt;/scriptgt; lt;script type="text/javascript"gt; $( document ).ready(function() { var cls="one"; var len = $('ui li').length; $("ui li").each(function(index){ if(cls!=$(this).attr("class")){ $(this).attr("style","background-color:red;"); if(index!=1){ $(this).prev().attr("style","background-color:red;"); } cls=$(this).attr("class"); } if(index === (len - 1)){ $(this).attr("style","background-color:red;"); } }); }); lt;/scriptgt; lt;stylegt; lt;/stylegt; lt;/headgt; lt;bodygt; lt;UIgt; lt;li class="one"gt;testlt;/ligt; lt;li class="two"gt;Firstlt;/ligt; lt;li class="two"gt;testlt;/ligt; lt;li class="two"gt;testlt;/ligt; lt;li class="two"gt;Lastlt;/ligt; lt;li class="one"gt;Firstlt;/ligt; lt;li class="one"gt;testlt;/ligt; lt;li class="one"gt;testlt;/ligt; lt;li class="one"gt;testlt;/ligt; lt;li class="one"gt;testlt;/ligt; lt;li class="one"gt;testlt;/ligt; lt;li class="one"gt;testlt;/ligt; lt;li class="one"gt;Lastlt;/ligt; lt;li class="two"gt;Firstlt;/ligt; lt;li class="two"gt;testlt;/ligt; lt;li class="two"gt;testlt;/ligt; lt;li class="two"gt;testlt;/ligt; lt;li class="two"gt;testlt;/ligt; lt;li class="two"gt;Lastlt;/ligt; lt;/uigt;
Ответ №2:
Вот способ, которым вы могли бы попробовать:
var oneList = document.getElementById("bigList").querySelectorAll(".one"); oneList.forEach(function (item) { if (item.nextElementSibling) { var nextSibling = item.nextElementSibling; if (nextSibling.classList.contains("two")) { item.classList.add("bg-green"); } } }); var twoList = document.getElementById("bigList").querySelectorAll(".two"); twoList.forEach(function (item) { if (item.nextElementSibling) { var nextSibling = item.nextElementSibling; if (nextSibling.classList.contains("one")) { item.classList.add("bg-green"); } } });
/* First */ .one .two, .two .one { background-color: red; } /* Last */ .bg-green, #bigList li:last-child { background-color: green; } /* No style on first child */ #bigList li:first-child{ background-color: transparent; }
lt;div class="box"gt; lt;ul id="bigList"gt; lt;li class="one"gt;1lt;/ligt; lt;li class="two"gt;2lt;/ligt; lt;!--First--gt; lt;li class="two"gt;2lt;/ligt; lt;li class="two"gt;2lt;/ligt; lt;li class="two"gt;2lt;/ligt; lt;!--Last--gt; lt;li class="one"gt;1lt;/ligt; lt;!--First--gt; lt;li class="one"gt;1lt;/ligt; lt;li class="one"gt;1lt;/ligt; lt;li class="one"gt;1lt;/ligt; lt;li class="one"gt;1lt;/ligt; lt;li class="one"gt;1lt;/ligt; lt;li class="one"gt;1lt;/ligt; lt;li class="one"gt;1lt;/ligt; lt;!--Last--gt; lt;li class="two"gt;2lt;/ligt; lt;!--First--gt; lt;li class="two"gt;2lt;/ligt; lt;li class="two"gt;2lt;/ligt; lt;li class="two"gt;2lt;/ligt; lt;li class="two"gt;2lt;/ligt; lt;li class="two"gt;2lt;/ligt; lt;!--Last--gt; lt;/ulgt; lt;/divgt;
Комментарии:
1. @Kinglish хороший улов, я отредактировал его, чтобы исправить это.