前右我想选择元素当前元素权利之前控制。当前元素是一个超链接,当单击它时将一些文本附加到超链接之前的“目标”。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