在UL元素之前更改DOM中的Div

时间:2016-06-24 14:24:50

标签: javascript html css dom

我有以下代码(https://jsfiddle.net/weemoLya/3/):

<div style="padding: 0px 41px 14px; line-height: 15pt;"><span style="font-family: georgia;">Anwoarnoernb&nbsp; bneobnoqbno nb bnorgneoüqrgn beoünbeoütnboetuübn nbwetiobnweoütnho übnoet wübn weton<br />

otnwboün boenbhiowt nb etiopwogj weto&nbsp; getiogei oeghqeogje ghqeoü gheoügneoqüh<br />
<br />
Ihre Aufgaben:</span></div>

<ul>
<li style="padding: 0px 41px 14px;">test</li>
<li style="padding: 0px 41px 14px;">test2</li>
</ul>

我想更改div框的填充。但是因为我在一个框架中,我不能在html代码中改变它。我需要通过javascript更改它。实际上有很多div盒子,而不仅仅是这个盒子。但是我要改变的div框没有ID,所以我不能改变这个DIV。

但我想改变<ul> - 标签前面的每个DIV。这可能吗?

具体:

  1. 搜索所有ul-tags
  2. 找到DOM中ul-tag之前的div
  3. 更改此div框的填充。
  4. 更新

    我真的忘了提到我需要一个没有JQuery的解决方案。遗憾。

3 个答案:

答案 0 :(得分:2)

您可以使用选择器和方法:

$('div + ul').prev().css('padding', 0)

-jsFiddle-

或者仍然在jQuery中:

$('ul').prev('div').css('padding', 0) // i guess it would be slower, if it really matters...

答案 1 :(得分:1)

您可以使用.prev()选择div,并使用.css()

更改填充
$("ul:eq(0)").prev().css("padding","*values*")

答案 2 :(得分:1)

使用javascript可以使用jQuery做什么。

var ul = document.querySelector('div + ul');
for(var i=0,el;el=ul.parentNode.children[i];++i){
  if(el === ul){
    //this is your div. Do whatever you want with it.
    var div = ul.parentNode.children[i-1];
    break;
  }
}

//if you have to handle many such elements
var uls = document.querySelectorAll('div + ul');
for(var j=0,ul;ul = uls[j];++j){
   for(var i=0,el;el=ul.parentNode.children[i];++i){
...