前右我想選擇元素當前元素權利之前控制。當前元素是一個超鏈接,當單擊它時將一些文本附加到超鏈接之前的「目標」。jQuery選擇目標當前元素
這些控件是ASP:直放站所以相同的序列被重複一遍又一遍,每超級鏈接應該能夠識別它上面的元素。
這裏是我的DOM截圖
我只需要知道如何選擇這樣的元素!感謝
前右我想選擇元素當前元素權利之前控制。當前元素是一個超鏈接,當單擊它時將一些文本附加到超鏈接之前的「目標」。jQuery選擇目標當前元素
這些控件是ASP:直放站所以相同的序列被重複一遍又一遍,每超級鏈接應該能夠識別它上面的元素。
這裏是我的DOM截圖
我只需要知道如何選擇這樣的元素!感謝
您可以使用previousSibling
:
var as = document.getElementsByTagName('a');
for (var i=0, len=as.length;i<len;i++){
as[i].onclick = function(e){
e.preventDefault();
var previous;
if (this.previousSibling.nodeName == '#text') {
// the previousSibling was a textnode, comprising of the whitespace between elements
previous = this.previousSibling.previousSibling;
}
else {
previous = this.previousSibling;
}
previous.style.backgroundColor = 'yellow';
};
}
或者使用jQuery的prev()
:
$('a').click(
function(e){
e.preventDefault();
$(this).prev('div').css('background-color','yellow');
});
參考文獻:
多數民衆贊成在「緊跟」元素選擇。我需要「前一個」選擇器。 :) – 2011-12-18 21:27:44
請澄清你的問題。它應該閱讀*選擇元素右**之前**當前*,而不是後**,右?我從一讀中得到了和Ryan Casas一樣的明顯的錯誤印象。 – hasienda 2011-12-18 21:32:20
好吧,看我的編輯答案;) – 2011-12-18 21:33:03
我認爲prev
是你想要的解決方案。只是爲了回答你的問題,如果你想爲一個選擇,你可以自己建立一個這樣的:
$.expr[':'].prev = function(o) {
return $(o).prev();
};
而且使用它像:
$('a:prev').someMethod(); // which works exactly like $('a').prev().someMethod
謝謝,這是訣竅! – 2011-12-18 21:42:57
不客氣!很高興有幫助! =)...雖然我認爲第一個代碼示例中的if可以/應該以某種方式簡化... = / – 2011-12-18 21:53:54