Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用JQuery更改所有元素';同一类中的css样式_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 使用JQuery更改所有元素';同一类中的css样式

Javascript 使用JQuery更改所有元素';同一类中的css样式,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我想用classLiregion2更改所有divs的背景色。 我只想更改div背景色,而不是li。 但是,我的代码只更改了一个div元素!我怎样才能让它影响到所有人 以下是我的HTML5代码: <div class = "Liregion2" id = "LineBock1" style ="padding-bottom:3%;padding-left:10%;background-color:#ff9900"> <li> <a href="#" id =

我想用class
Liregion2
更改所有
div
s的
背景色。
我只想更改
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>  

您不需要遍历每个元素。试试这个

$('#FirstLine').click(function(){
    $('.Liregion2').css("background-color" , "transparent");
    event.stopPropagation(); 
});

不需要那种复杂的代码,
.css()
函数本身迭代元素,并将css应用于所有元素

$('#FirstLine').click(function() {
    $('.Liregion2').css("background-color" , "transparent");
});
试试这个:

$(document).on("click", "#FirstLine", function(){      
    $('.Liregion2').css("background-color" , "transparent");    
});

css
方法在后台对集合进行迭代,无需使用
每个
循环。此外,您的标记无效,
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
方法来添加/删除它们。

创建一个JSFIDLE.net
CSS
在后台迭代集合,无需使用
每个
循环。此外,您的标记无效,
li
应该是
ul
/
ol
元素的子元素。您使用的是内联css,内联css不能被覆盖,其次,您在div内部使用的标记有问题。不可能这样,您必须在div内部使用它。请解决您的问题。在单独的样式表中编写css,然后将其作为类或id选择器,而不是使用内联样式。@kimWong提供jsfiddle.net链接这比使用
每个
(在本例中),但这并不能解决问题。谢谢,但我可以使用
    • 吗?这合法吗?@KimWong不客气。不幸的是,这是无效的。每个浏览器将对其进行不同的解析。我建议只使用一个
      ul
      元素,将那些
      li
      s作为子元素。然后,您可以将
      div
      元素(或所需的任何有效标记)作为
      li
      的后代。
      // 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(); 
      });