2016-09-26 98 views
2

我有這樣的代碼:基於其前一個兄弟的孩子選擇元素

<cite> 
<a id="john" href="javascript: void(0)">John</a> 
<span>time</span> 
<a>DELETE</a> 
</cite> 
<blockquote>hello there</blockquote> 

這是我的CSS:

cite #john + blockquote {color:black;} 

我知道這不會工作,但我需要一些東西來在cite之後只選擇包含ID爲john的錨點的元素。

我無法更改HTML只有CSS。請有任何想法嗎?

如果CSS不可能,那麼JavaScript解決方案也會受到歡迎。

+1

沒有':有()'選擇在CSS,但。 –

+0

你不能用css選擇器來選擇它。你需要爲此使用JavaScript。 –

+0

您的標題與您的描述完全不符。 – BoltClock

回答

3

您可以使用以下jQuery選擇器來選擇所需的元素。

$('cite').has('a#john').next('blockquote') 

$('cite').has('a#john').next('blockquote').addClass('active');
.active { 
 
    background: green; 
 
} 
 

 
blockquote { 
 
    margin-right: 0; 
 
    margin-left: 0; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<cite> 
 
    <a id="john" href="javascript: void(0)">John</a> 
 
    <span>time</span> 
 
    <a>DELETE</a> 
 
</cite> 
 
<blockquote>hello there</blockquote> 
 
<cite> 
 
    <a href="javascript: void(0)">John</a> 
 
    <span>time</span> 
 
    <a>DELETE</a> 
 
</cite> 
 
<blockquote>hello there</blockquote> 
 
<cite> 
 
    <a id="john" href="javascript: void(0)">John</a> 
 
    <span>time</span> 
 
    <a>DELETE</a> 
 
</cite> 
 
<blockquote>hello there</blockquote>

解決方案,而jQuery的:

var activeClass = 'active'; 
 
var cites = document.querySelectorAll('cite'); 
 

 
[].forEach.call(cites, function(elem) { 
 
\t if(elem.querySelector('a#john')) { 
 
     var blockQuote = elem.nextElementSibling; 
 
     blockQuote.className = blockQuote.className + activeClass; 
 
    } 
 
});
.active { 
 
    background: green; 
 
} 
 

 
blockquote { 
 
    margin-right: 0; 
 
    margin-left: 0; 
 
}
<cite> 
 
    <a id="john" href="javascript: void(0)">John</a> 
 
    <span>time</span> 
 
    <a>DELETE</a> 
 
</cite> 
 
<blockquote>hello there</blockquote> 
 
<cite> 
 
    <a href="javascript: void(0)">John</a> 
 
    <span>time</span> 
 
    <a>DELETE</a> 
 
</cite> 
 
<blockquote>hello there</blockquote> 
 
<cite> 
 
    <a id="john" href="javascript: void(0)">John</a> 
 
    <span>time</span> 
 
    <a>DELETE</a> 
 
</cite> 
 
<blockquote>hello there</blockquote>

+0

是否有可能沒有jQuery?似乎我不能在這裏使用它。 –

+1

@CainNuke我已經更新了我的答案) –

+0

對不起,現在我得到這個:cites.forEach不是一個函數,「 –