2015-05-05 27 views
-1

我有一个问题,选择第二.prev()选择第二.prev如.prev()上一个()

HTML:

<div></div> <- Set margin to 0; 
<div></div> 
<div id="interactive"></div> 

的jQuery:

$("#interactive").prev().prev().css("margin", "0"); 

这将会给CSS到他们两个,我希望更改只适用于第一个div。

最好的问候,

+0

有什么理由不能给你想要访问一个ID或类的div? –

+2

http://codepen.io/anon/pen/aOvpdZ .'prev()。prev()'返回正确的元素,只有第一个div受影响 – fcalderan

回答

0

HTML

<div id="target"></div> 
<div></div> 
<div id="interactive"></div> 

jQuery的

$("#target").css("margin", "0"); 

这比prev().prev()更好的做法和有效

+3

这是“唯一”的解决方法 – ggzone

+1

这是一种有效的方法,因为prev ().prev()需要更多处理。 – PrakashSharma

0

您可以检查此工作小提琴: http://jsfiddle.net/adp8qxyb/

<div id="interactive"></didv> 

问题可能是HTML中的一些语法/标记错误。是确保每一个标签以及关闭

+0

很好的答案,但不好的解释。也许你可以更明确;) – JotaBe

+0

''?????? –

+0

@MilindAnantwar那是代码,他做了一些编辑 – ggzone

-1

HTML:

<div></div> 
<div></div> 
<div id="interactive"></div> 

的JavaScript:

var f; 
for(f=0;f<document.getElementsByTagName("div").length;f++){ 
    var div = document.getElementsByTagName("div")[f]; 
    if(div===document.getElementById("interactive")){ 
    document.getElementsByTagName("div")[f-2].style.margin="0"; 
    } 
} 

我已经测试了!
如果在3个div之前还有更多的元素,它也可以工作!

+1

这只会在页面只有这3个div时才起作用。在任何其他情况下它都不起作用。 – JotaBe

+0

它将与所有其他元素一样使用div和混合 - 我已经测试过它 - 它的工作原理 –

+0

如果页面上有更多的div,在这之前,它根本无法工作。它会选择不同的div。我不是说如果标签不同,我的意思是如果页面上有更多的元素,它会失败。 – JotaBe