[英]Use JQuery to change all element's css style in same class
我想使用类Liregion2
更改所有div
的所有background-color
。 我只想更改div
背景颜色,而不是li
。 我的代码只更改了一个div
元素! 我怎样才能影响到所有人?
这是我的HTML5代码:
<div class = "Liregion2" id = "LineBock1" style ="padding-bottom:3%;padding-left:10%;background-color:#ff9900">
<li>
<a href="#" id = "FirstLine" style="color:#fff;text-decoration: none" >1號線</a>
</li>
</div>
<div class = "Liregion2" id = "LineBock2" style ="padding-bottom:3%;padding-left:10%;">
<li>
<a href="#" id = "SecondLine" style="color:#009999;text-decoration: none" >2號線</a>
</li>
</div>
<div class = "Liregion2" id = "LineBock3" style ="padding-bottom:3%;padding-left:10%;">
<li>
<a href="#" id = "ThirdLine" style="color:#ff3366;text-decoration: none" >3號線</a>
</li>
</div>
<div class = "Liregion2" id = "LineBock4" style = "padding-left:10%;">
<li>
<a href="#" id = "ForthLine" style="color:#0066ff;text-decoration: none" >4號線</a>
</li>
</div>
这是JQuery:
$('#FirstLine').click(function(){
$('.Liregion2').each(function( index , element ){
$(element).css("background-color" , "transparent");
});
event.stopPropagation();
});
您不需要遍历每个元素。 尝试这个,
$('#FirstLine').click(function(){
$('.Liregion2').css("background-color" , "transparent");
event.stopPropagation();
});
css
方法在幕后遍历集合,无需使用each
循环。 同样,您的标记无效, li
元素应该是ul
/ ol
元素的子元素。 div
元素应替换为上述元素之一( 尽管这不是语义标记) 。
看来您只想操纵父元素的css
属性。 在这种情况下,可以使用.closest()
或.parent()
方法:
// Do not miss the `event` object if you want to use it
$('.Liregion2 a').click(function(event) {
$(this).closest('.Liregion2').css("background-color" , "transparent");
event.stopPropagation();
});
建议避免使用内联样式,这会使标记无法维护。 您可以声明CSS类,并使用jQuery removeClass
和addClass
方法添加/删除它们。
不需要那种复杂的代码, .css()
函数本身会循环访问元素,并将.css()
应用于所有元素。
$('#FirstLine').click(function() {
$('.Liregion2').css("background-color" , "transparent");
});
尝试这个:
$(document).on("click", "#FirstLine", function(){
$('.Liregion2').css("background-color" , "transparent");
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.